.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "Regexp::Pattern::License 3pm"
.TH Regexp::Pattern::License 3pm "2021-07-22" "perl v5.32.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Regexp::Pattern::License \- Regular expressions for legal licenses
.SH "VERSION"
.IX Header "VERSION"
Version v3.7.1
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\& use Regexp::Pattern::License;
\& use Regexp::Pattern;
\&
\& my $re = re( \*(AqLicense::gpl_3\*(Aq );
\& my $string = \*(AqGNU General Public License version 3 or later\*(Aq;
\&
\& $string =~ /$re/; # => success
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
Regexp::Pattern::License provides a hash of regular expression patterns
related to legal software licenses.
.PP
Regexp::Pattern is a convention for organizing reusable regex patterns.
.SH "PATTERNS"
.IX Header "PATTERNS"
.SS "Licensing traits"
.IX Subsection "Licensing traits"
Patterns each covering a single trait occuring in licenses.
.PP
Each of these patterns has the tag \fB type:trait \fR.
.IP "\(bu" 4
addr_fsf
.IP "\(bu" 4
addr_fsf_franklin
.IP "\(bu" 4
addr_fsf_franklin_steet
.IP "\(bu" 4
addr_fsf_mass
.IP "\(bu" 4
addr_fsf_temple
.IP "\(bu" 4
any_of
.IP "\(bu" 4
by
.IP "\(bu" 4
by_apache
.IP "\(bu" 4
by_fsf
.IP "\(bu" 4
by_james_clark
.IP "\(bu" 4
by_psf
.IP "\(bu" 4
by_sam_hocevar
.IP "\(bu" 4
clause_retention
.IP "\(bu" 4
clause_reproduction
.IP "\(bu" 4
clause_advertising
.IP "\(bu" 4
clause_advertising_always
.IP "\(bu" 4
clause_non_endorsement
.IP "\(bu" 4
except_389
.IP "\(bu" 4
except_autoconf_data
.IP "\(bu" 4
except_autoconf_2
.IP "\(bu" 4
except_autoconf_2_archive
.IP "\(bu" 4
except_autoconf_2_autotroll
.IP "\(bu" 4
except_autoconf_2_g10
.IP "\(bu" 4
except_autoconf_3
.IP "\(bu" 4
except_bison_1_24
.IP "\(bu" 4
except_bison_2_2
.IP "\(bu" 4
except_classpath_2
.IP "\(bu" 4
except_ecos_2
.IP "\(bu" 4
except_epl
.IP "\(bu" 4
except_epl_mpl
.IP "\(bu" 4
except_faust
.IP "\(bu" 4
except_font_2
.IP "\(bu" 4
except_gcc_2
.IP "\(bu" 4
except_gcc_3_1
.IP "\(bu" 4
except_gstreamer
.IP "\(bu" 4
except_libtool
.IP "\(bu" 4
except_mif
.IP "\(bu" 4
except_openssl
.IP "\(bu" 4
except_ocaml\-lgpl
.IP "\(bu" 4
except_openssl\-lgpl
.IP "\(bu" 4
except_openssl_s3
.IP "\(bu" 4
except_prefix_agpl
.IP "\(bu" 4
except_prefix_generic
.IP "\(bu" 4
except_prefix_gpl
.IP "\(bu" 4
except_prefix_gpl_clisp
.IP "\(bu" 4
except_prefix_lgpl
.IP "\(bu" 4
except_proguard
.IP "\(bu" 4
except_qt_gpl_1
.IP "\(bu" 4
except_qt_gpl_eclipse
.IP "\(bu" 4
except_qt_gpl_openssl
.IP "\(bu" 4
except_qt_kernel
.IP "\(bu" 4
except_qt_lgpl_1_1
.IP "\(bu" 4
except_qt_nosource
.IP "\(bu" 4
except_sdc
.IP "\(bu" 4
except_sollya_4_1
.IP "\(bu" 4
except_warzone
.IP "\(bu" 4
except_wxwindows
.IP "\(bu" 4
except_xerces
.IP "\(bu" 4
fsf_unlimited
.IP "\(bu" 4
fsf_unlimited_retention
.IP "\(bu" 4
generated
.IP "\(bu" 4
license_label
.IP "\(bu" 4
license_label_trove
.IP "\(bu" 4
licensed_under
.IP "\(bu" 4
or_at_option
.IP "\(bu" 4
usage_rfn
.IP "\(bu" 4
version
.IP "\(bu" 4
version_later
.IP "\(bu" 4
version_later_paragraph
.IP "\(bu" 4
version_later_postfix
.IP "\(bu" 4
version_number
.IP "\(bu" 4
version_number_suffix
.IP "\(bu" 4
version_only
.IP "\(bu" 4
version_prefix
.IP "\(bu" 4
version_numberstring
.SS "Single licenses"
.IX Subsection "Single licenses"
Patterns each covering a single license.
.PP
Each of these patterns has exactly one of these tags:
\&\fB type:unversioned \fR
\&\fB type:versioned:decimal \fR
\&\fB type:singleversion:* \fR
\&\fB type:usage:*:* \fR
\&.
.IP "\(bu" 4
aal
.IP "\(bu" 4
abstyles
.IP "\(bu" 4
adobe_2006
.IP "\(bu" 4
adobe_glyph
.IP "\(bu" 4
adsl
.IP "\(bu" 4
afl
.IP "\(bu" 4
afl_1_1
.IP "\(bu" 4
afl_1_2
.IP "\(bu" 4
afl_2
.IP "\(bu" 4
afl_2_1
.IP "\(bu" 4
afl_3
.IP "\(bu" 4
afmparse
.IP "\(bu" 4
agpl
.IP "\(bu" 4
agpl_1
.IP "\(bu" 4
agpl_1_only
.IP "\(bu" 4
agpl_1_or_later
.IP "\(bu" 4
agpl_2
.IP "\(bu" 4
agpl_3
.IP "\(bu" 4
agpl_3_only
.IP "\(bu" 4
agpl_3_or_later
.IP "\(bu" 4
aladdin
.IP "\(bu" 4
aladdin_8
.IP "\(bu" 4
aladdin_9
.IP "\(bu" 4
amdplpa
.IP "\(bu" 4
aml
.IP "\(bu" 4
ampas
.IP "\(bu" 4
antlr_pd
.IP "\(bu" 4
apache
.IP "\(bu" 4
apache_1
.IP "\(bu" 4
apache_1_1
.IP "\(bu" 4
apache_2
.IP "\(bu" 4
apafml
.IP "\(bu" 4
apl
.IP "\(bu" 4
apl_1
.IP "\(bu" 4
apsl
.IP "\(bu" 4
apsl_1
.IP "\(bu" 4
apsl_1_1
.IP "\(bu" 4
apsl_1_2
.IP "\(bu" 4
apsl_2
.IP "\(bu" 4
artistic
.IP "\(bu" 4
artistic_1
.IP "\(bu" 4
artistic_1_cl8
.IP "\(bu" 4
artistic_1_perl
.IP "\(bu" 4
artistic_2
.IP "\(bu" 4
bahyph
.IP "\(bu" 4
barr
.IP "\(bu" 4
bdwgc
.IP "\(bu" 4
bdwgc_matlab
.IP "\(bu" 4
beerware
.IP "\(bu" 4
bittorrent
.IP "\(bu" 4
bittorrent_1
.IP "\(bu" 4
bittorrent_1_1
.IP "\(bu" 4
borceux
.IP "\(bu" 4
bsd_0_clause
.IP "\(bu" 4
bsd_1_clause
.IP "\(bu" 4
bsd_2_clause
.IP "\(bu" 4
bsd_2_clause_freebsd
.IP "\(bu" 4
bsd_2_clause_netbsd
.IP "\(bu" 4
bsd_2_clause_patent
.IP "\(bu" 4
bsd_2_clause_views
.IP "\(bu" 4
bsd_3_clause
.IP "\(bu" 4
bsd_3_clause_attribution
.IP "\(bu" 4
bsd_3_clause_clear
.IP "\(bu" 4
bsd_3_clause_lbnl
.IP "\(bu" 4
bsd_3_clause_modification
.IP "\(bu" 4
bsd_3_clause_no_military_license
.IP "\(bu" 4
bsd_3_clause_no_nuclear_license
.IP "\(bu" 4
bsd_3_clause_no_nuclear_license_2014
.IP "\(bu" 4
bsd_3_clause_no_nuclear_warranty
.IP "\(bu" 4
bsd_4_clause
.IP "\(bu" 4
bsd_4_clause_uc
.IP "\(bu" 4
bsl
.IP "\(bu" 4
bsl_1
.IP "\(bu" 4
bzip2
.IP "\(bu" 4
bzip2_1_0_5
.IP "\(bu" 4
bzip2_1_0_6
.IP "\(bu" 4
cal
.IP "\(bu" 4
cal_1
.IP "\(bu" 4
caldera
.IP "\(bu" 4
catosl
.IP "\(bu" 4
catosl_1_1
.IP "\(bu" 4
cc_by
.IP "\(bu" 4
cc_by_1
.IP "\(bu" 4
cc_by_2
.IP "\(bu" 4
cc_by_2_5
.IP "\(bu" 4
cc_by_3
.IP "\(bu" 4
cc_by_4
.IP "\(bu" 4
cc_by_nc
.IP "\(bu" 4
cc_by_nc_1
.IP "\(bu" 4
cc_by_nc_2
.IP "\(bu" 4
cc_by_nc_2_5
.IP "\(bu" 4
cc_by_nc_3
.IP "\(bu" 4
cc_by_nc_4
.IP "\(bu" 4
cc_by_nc_nd
.IP "\(bu" 4
cc_by_nc_nd_1
.IP "\(bu" 4
cc_by_nc_nd_2
.IP "\(bu" 4
cc_by_nc_nd_2_5
.IP "\(bu" 4
cc_by_nc_nd_3
.IP "\(bu" 4
cc_by_nc_nd_4
.IP "\(bu" 4
cc_by_nc_sa
.IP "\(bu" 4
cc_by_nc_sa_1
.IP "\(bu" 4
cc_by_nc_sa_2
.IP "\(bu" 4
cc_by_nc_sa_2_5
.IP "\(bu" 4
cc_by_nc_sa_3
.IP "\(bu" 4
cc_by_nc_sa_4
.IP "\(bu" 4
cc_by_nd
.IP "\(bu" 4
cc_by_nd_1
.IP "\(bu" 4
cc_by_nd_2
.IP "\(bu" 4
cc_by_nd_2_5
.IP "\(bu" 4
cc_by_nd_3
.IP "\(bu" 4
cc_by_nd_4
.IP "\(bu" 4
cc_by_sa
.IP "\(bu" 4
cc_by_sa_1
.IP "\(bu" 4
cc_by_sa_2
.IP "\(bu" 4
cc_by_sa_2_5
.IP "\(bu" 4
cc_by_sa_3
.IP "\(bu" 4
cc_by_sa_4
.IP "\(bu" 4
cc_cc0
.IP "\(bu" 4
cc_cc0_1
.IP "\(bu" 4
cc_devnations
.IP "\(bu" 4
cc_devnations_2
.IP "\(bu" 4
cc_nc
.IP "\(bu" 4
cc_nc_1
.IP "\(bu" 4
cc_nc_sa
.IP "\(bu" 4
cc_nc_sa_1
.IP "\(bu" 4
cc_nc_sp
.IP "\(bu" 4
cc_nc_sp_1
.IP "\(bu" 4
cc_nd_nc
.IP "\(bu" 4
cc_nd_nc_1
.IP "\(bu" 4
cc_nd
.IP "\(bu" 4
cc_nd_1
.IP "\(bu" 4
cc_pd
.IP "\(bu" 4
cc_pdd
.IP "\(bu" 4
cc_pddc
.IP "\(bu" 4
cc_sa
.IP "\(bu" 4
cc_sa_1
.IP "\(bu" 4
cc_sampling
.IP "\(bu" 4
cc_sampling_1
.IP "\(bu" 4
cc_sp
.IP "\(bu" 4
cc_sp_1
.IP "\(bu" 4
cddl
.IP "\(bu" 4
cddl_1
.IP "\(bu" 4
cddl_1_1
.IP "\(bu" 4
cecill
.IP "\(bu" 4
cecill_1
.IP "\(bu" 4
cecill_1_1
.IP "\(bu" 4
cecill_2
.IP "\(bu" 4
cecill_2_1
.IP "\(bu" 4
cecill_b
.IP "\(bu" 4
cecill_b_1
.IP "\(bu" 4
cecill_c
.IP "\(bu" 4
cecill_c_1
.IP "\(bu" 4
cnri_jython
.IP "\(bu" 4
cnri_python
.IP "\(bu" 4
cnri_python_gpl_compat
.IP "\(bu" 4
cpal
.IP "\(bu" 4
cpal_1
.IP "\(bu" 4
cpl
.IP "\(bu" 4
cpl_1
.IP "\(bu" 4
cpol
.IP "\(bu" 4
cpol_1_02
.IP "\(bu" 4
cryptix
.IP "\(bu" 4
cua_opl
.IP "\(bu" 4
cua_opl_1
.IP "\(bu" 4
cube
.IP "\(bu" 4
curl
.IP "\(bu" 4
cvw
.IP "\(bu" 4
dsdp
.IP "\(bu" 4
ecl
.IP "\(bu" 4
ecl_1
.IP "\(bu" 4
ecl_2
.IP "\(bu" 4
ecos_1_1
.IP "\(bu" 4
ecos_2
.IP "\(bu" 4
efl
.IP "\(bu" 4
efl_1
.IP "\(bu" 4
efl_2
.IP "\(bu" 4
entessa
.IP "\(bu" 4
epl
.IP "\(bu" 4
epl_1
.IP "\(bu" 4
epl_2
.IP "\(bu" 4
erlpl
.IP "\(bu" 4
erlpl_1_1
.IP "\(bu" 4
eudatagrid
.IP "\(bu" 4
eupl
.IP "\(bu" 4
eupl_1
.IP "\(bu" 4
eupl_1_1
.IP "\(bu" 4
eupl_1_2
.IP "\(bu" 4
eurosym
.IP "\(bu" 4
fair
.IP "\(bu" 4
frameworx
.IP "\(bu" 4
frameworx_1
.IP "\(bu" 4
fsfap
.IP "\(bu" 4
fsful
.IP "\(bu" 4
fsfullr
.IP "\(bu" 4
ftl
.IP "\(bu" 4
gfdl
.IP "\(bu" 4
gfdl_1_1
.IP "\(bu" 4
gfdl_1_1_only
.IP "\(bu" 4
gfdl_1_1_or_later
.IP "\(bu" 4
gfdl_1_2
.IP "\(bu" 4
gfdl_1_2_only
.IP "\(bu" 4
gfdl_1_2_or_later
.IP "\(bu" 4
gfdl_1_3
.IP "\(bu" 4
gfdl_1_3_only
.IP "\(bu" 4
gfdl_1_3_or_later
.IP "\(bu" 4
gfdl_niv
.IP "\(bu" 4
gpl
.IP "\(bu" 4
gpl_1
.IP "\(bu" 4
gpl_1_only
.IP "\(bu" 4
gpl_1_or_later
.IP "\(bu" 4
gpl_2
.IP "\(bu" 4
gpl_2_only
.IP "\(bu" 4
gpl_2_or_later
.IP "\(bu" 4
gpl_3
.IP "\(bu" 4
gpl_3_only
.IP "\(bu" 4
gpl_3_or_later
.IP "\(bu" 4
gsoap
.IP "\(bu" 4
gsoap_1.3b
.IP "\(bu" 4
hpnd
.IP "\(bu" 4
hpnd_sell
.IP "\(bu" 4
icu
.IP "\(bu" 4
intel
.IP "\(bu" 4
ipa
.IP "\(bu" 4
ipl
.IP "\(bu" 4
ipl_1
.IP "\(bu" 4
isc
.IP "\(bu" 4
jabberpl
.IP "\(bu" 4
json
.IP "\(bu" 4
jython
.IP "\(bu" 4
kevlin_henney
.IP "\(bu" 4
lgpl
.IP "\(bu" 4
lgpl_2
.IP "\(bu" 4
lgpl_2_only
.IP "\(bu" 4
lgpl_2_or_later
.IP "\(bu" 4
lgpl_2_1
.IP "\(bu" 4
lgpl_2_1_only
.IP "\(bu" 4
lgpl_2_1_or_later
.IP "\(bu" 4
lgpl_3
.IP "\(bu" 4
lgpl_3_only
.IP "\(bu" 4
lgpl_3_or_later
.IP "\(bu" 4
lgpl_bdwgc
.IP "\(bu" 4
libpng
.IP "\(bu" 4
liliq_p
.IP "\(bu" 4
liliq_p_1_1
.IP "\(bu" 4
liliq_r
.IP "\(bu" 4
liliq_r_1_1
.IP "\(bu" 4
liliq_r_plus
.IP "\(bu" 4
liliq_r_plus_1_1
.IP "\(bu" 4
llgpl
.IP "\(bu" 4
lpl
.IP "\(bu" 4
lpl_1
.IP "\(bu" 4
lpl_1_02
.IP "\(bu" 4
lppl
.IP "\(bu" 4
lppl_1
.IP "\(bu" 4
lppl_1_1
.IP "\(bu" 4
lppl_1_2
.IP "\(bu" 4
lppl_1_3a
.IP "\(bu" 4
lppl_1_3c
.IP "\(bu" 4
miros
.IP "\(bu" 4
mit_0
.IP "\(bu" 4
mit_advertising
.IP "\(bu" 4
mit_cmu
.IP "\(bu" 4
mit_cmu_warranty
.IP "\(bu" 4
mit_enna
.IP "\(bu" 4
mit_epinions
.IP "\(bu" 4
mit_feh
.IP "\(bu" 4
mit_new
.IP "\(bu" 4
mit_new_materials
.IP "\(bu" 4
mit_old
.IP "\(bu" 4
mit_oldstyle
.IP "\(bu" 4
mit_oldstyle_disclaimer
.IP "\(bu" 4
mit_oldstyle_permission
.IP "\(bu" 4
mit_open_group
.IP "\(bu" 4
mit_openvision
.IP "\(bu" 4
mit_osf
.IP "\(bu" 4
mit_unixcrypt
.IP "\(bu" 4
mit_whatever
.IP "\(bu" 4
mit_widget
.IP "\(bu" 4
mit_xfig
.IP "\(bu" 4
motosoto
.IP "\(bu" 4
mpl
.IP "\(bu" 4
mpl_1
.IP "\(bu" 4
mpl_1_1
.IP "\(bu" 4
mpl_2
.IP "\(bu" 4
ms_pl
.IP "\(bu" 4
ms_rl
.IP "\(bu" 4
mulan
.IP "\(bu" 4
mulan_1
.IP "\(bu" 4
mulan_2
.IP "\(bu" 4
multics
.IP "\(bu" 4
nasa
.IP "\(bu" 4
nasa_1_3
.IP "\(bu" 4
naumen
.IP "\(bu" 4
ncsa
.IP "\(bu" 4
ngpl
.IP "\(bu" 4
nokia
.IP "\(bu" 4
npl
.IP "\(bu" 4
npl_1
.IP "\(bu" 4
npl_1_1
.IP "\(bu" 4
nposl
.IP "\(bu" 4
nposl_3
.IP "\(bu" 4
ntp
.IP "\(bu" 4
ntp_disclaimer
.IP "\(bu" 4
oclc
.IP "\(bu" 4
oclc_1
.IP "\(bu" 4
oclc_2
.IP "\(bu" 4
ofl
.IP "\(bu" 4
ofl_1
.IP "\(bu" 4
ofl_1_no_rfn
.IP "\(bu" 4
ofl_1_rfn
.IP "\(bu" 4
ofl_1_1
.IP "\(bu" 4
ofl_1_1_no_rfn
.IP "\(bu" 4
ofl_1_1_rfn
.IP "\(bu" 4
ogc
.IP "\(bu" 4
ogc_1
.IP "\(bu" 4
ogtsl
.IP "\(bu" 4
oldap
.IP "\(bu" 4
oldap_1_1
.IP "\(bu" 4
oldap_1_2
.IP "\(bu" 4
oldap_1_3
.IP "\(bu" 4
oldap_1_4
.IP "\(bu" 4
oldap_2
.IP "\(bu" 4
oldap_2_0_1
.IP "\(bu" 4
oldap_2_1
.IP "\(bu" 4
oldap_2_2
.IP "\(bu" 4
oldap_2_2_1
.IP "\(bu" 4
oldap_2_2_2
.IP "\(bu" 4
oldap_2_3
.IP "\(bu" 4
oldap_2_4
.IP "\(bu" 4
oldap_2_5
.IP "\(bu" 4
oldap_2_6
.IP "\(bu" 4
oldap_2_7
.IP "\(bu" 4
oldap_2_8
.IP "\(bu" 4
openssl
.IP "\(bu" 4
opl
.IP "\(bu" 4
opl_1
.IP "\(bu" 4
oset_pl
.IP "\(bu" 4
oset_pl_2_1
.IP "\(bu" 4
osl
.IP "\(bu" 4
osl_1
.IP "\(bu" 4
osl_1_1
.IP "\(bu" 4
osl_2
.IP "\(bu" 4
osl_2_1
.IP "\(bu" 4
osl_3
.IP "\(bu" 4
php
.IP "\(bu" 4
php_3
.IP "\(bu" 4
php_3_01
.IP "\(bu" 4
postgresql
.IP "\(bu" 4
public_domain
.IP "\(bu" 4
python
.IP "\(bu" 4
python_2
.IP "\(bu" 4
qpl
.IP "\(bu" 4
qpl_1
.IP "\(bu" 4
rpl
.IP "\(bu" 4
rpl_1
.IP "\(bu" 4
rpl_1_1
.IP "\(bu" 4
rpl_1_3
.IP "\(bu" 4
rpl_1_5
.IP "\(bu" 4
rpsl
.IP "\(bu" 4
rpsl_1
.IP "\(bu" 4
ruby
.IP "\(bu" 4
rscpl
.IP "\(bu" 4
sgi_b
.IP "\(bu" 4
sgi_b_1
.IP "\(bu" 4
sgi_b_1_1
.IP "\(bu" 4
sgi_b_2
.IP "\(bu" 4
simpl
.IP "\(bu" 4
simpl_2
.IP "\(bu" 4
simple
.IP "\(bu" 4
simple_1_1
.IP "\(bu" 4
sissl
.IP "\(bu" 4
sissl_1_1
.IP "\(bu" 4
sissl_1_2
.IP "\(bu" 4
sleepycat
.IP "\(bu" 4
spl
.IP "\(bu" 4
spl_1
.IP "\(bu" 4
ssleay
.IP "\(bu" 4
sugarcrm
.IP "\(bu" 4
sugarcrm_1_1_3
.IP "\(bu" 4
tosl
.IP "\(bu" 4
ucl
.IP "\(bu" 4
ucl_1
.IP "\(bu" 4
unicode_dfs_2015
.IP "\(bu" 4
unicode_dfs_2016
.IP "\(bu" 4
unicode_strict
.IP "\(bu" 4
unicode_tou
.IP "\(bu" 4
unlicense
.IP "\(bu" 4
upl
.IP "\(bu" 4
upl_1
.IP "\(bu" 4
vsl
.IP "\(bu" 4
vsl_1
.IP "\(bu" 4
w3c
.IP "\(bu" 4
w3c_19980519
.IP "\(bu" 4
w3c_19980720
.IP "\(bu" 4
w3c_20021231
.IP "\(bu" 4
w3c_20150513
.IP "\(bu" 4
watcom
.IP "\(bu" 4
watcom_1
.IP "\(bu" 4
wtfpl
.IP "\(bu" 4
wtfpl_1
.IP "\(bu" 4
wtfpl_2
.IP "\(bu" 4
wtfnmfpl
.IP "\(bu" 4
wtfnmfpl_1
.IP "\(bu" 4
x11
.IP "\(bu" 4
xnet
.IP "\(bu" 4
zlib
.IP "\(bu" 4
zlib_acknowledgement
.IP "\(bu" 4
zpl
.IP "\(bu" 4
zpl_1
.IP "\(bu" 4
zpl_1_1
.IP "\(bu" 4
zpl_2
.IP "\(bu" 4
zpl_2_1
.SS "License combinations"
.IX Subsection "License combinations"
Patterns each covering a combination of multiple licenses.
.PP
Each of these patterns has the tag \fB type:combo \fR.
.IP "\(bu" 4
net_snmp
.IP "\(bu" 4
perl
.SS "License groups"
.IX Subsection "License groups"
Patterns each covering either of multiple licenses.
.PP
Each of these patterns has the tag \fB type:group \fR.
.IP "\(bu" 4
bsd
.IP "\(bu" 4
cc
.IP "\(bu" 4
gnu
.IP "\(bu" 4
mit
.SH "STRUCTURE"
.IX Header "STRUCTURE"
The regexp patterns follows the DefHash specification,
and more specifically the structure of Regexp::Pattern,
defining access to one pattern per DefHash object, as \f(CW\*(C`pat\*(C'\fR.
.PP
Additionally, (sub)patterns are available in plaintext form, as \f(CW\*(C`pat.alt.*\*(C'\fR.
.SS "\s-1SUBJECT\s0"
.IX Subsection "SUBJECT"
Each pattern targets one or more subjects,
i.e. ways to directly or indirectly represent a license.
.PP
Beware that not all pattern objects fully cover all subjects.
.IP "trait" 4
.IX Item "trait"
Distinguishing trait or feature expressed in licensing strings,
e.g. an advertising clause or granting \*(L"...or any later version.\*(R"
.Sp
Coverage for this subject is currently rather weak.
.IP "name" 4
.IX Item "name"
Distinguishing name, e.g. usable in license grant.
.IP "grant" 4
.IX Item "grant"
Text granting the license.
.IP "license" 4
.IX Item "license"
Text containing licensing terms.
.Sp
Texts containing both license grant and licensing terms
(e.g. \s-1BSD\-\s0 and MIT-style licensing)
may be classified as either subject grant or subject license.
This may change, as needs for distinction is better understood.
.SS "\s-1SCOPE\s0"
.IX Subsection "SCOPE"
Each pattern can process material within some scope,
i.e. a certain sample size of the full subject.
.PP
As an example, use line-based processing,
where patterns spanning multiple lines are not applicable.
.IP "line" 4
.IX Item "line"
Pattern typically found within a single line.
Typically this means less than 70 characters within scope.
.IP "sentence" 4
.IX Item "sentence"
Pattern matching within a sentence.
.Sp
May span multiple lines, but not across multiple sentences.
Typically this means no full-stop or colon within scope.
.IP "paragraph" 4
.IX Item "paragraph"
Pattern matching distinguishing paragraph.
.Sp
May span multiple sentences, but not multiple paragraphs.
Typically this means no newline within scope.
.IP "section" 4
.IX Item "section"
Pattern matching distinguishing section.
.Sp
May span multiple paragraphs, but not multiple sections.
Typically this means blank line within scope.
.IP "multisection" 4
.IX Item "multisection"
Pattern may span multiple sections.
.SS "\s-1TAGS\s0"
.IX Subsection "TAGS"
Pattern defhashes optionally includes tags,
which may help in selecting multiple related patterns.
.PP
Tags are hierarchical,
with \f(CW\*(C`:\*(C'\fR as separator,
and may be extended without notice.
Therefore take care to permit sub-parts when tag-matching,
e.g. using a regex like \f(CW\*(C` /\eAsome:tag(?:\ez|:)/ \*(C'\fR.
.IP "\(bu" 4
family:bsd
.IP "\(bu" 4
family:cc
.IP "\(bu" 4
family:gpl
.IP "\(bu" 4
family:mit
.IP "\(bu" 4
family:zlib
.Sp
Pattern covers a license part of a family of licenses.
.IP "\(bu" 4
license:contains:grant:*
.Sp
License mentions a preferred form for granting the license.
.Sp
This implies that license is commonly granted by use of a different (typically far shorter) text.
.Sp
Fourth part (optional) is the key to corresponding license pattern,
for a grant belonging to a different license
(when omitted then a grant for same license is assumed).
.IP "\(bu" 4
license:contains:license:*
.Sp
License contains another license.
.Sp
Wildcard is the key to corresponding license pattern.
.IP "\(bu" 4
license:contains:name:*
.Sp
License mentions name of another license.
.IP "\(bu" 4
license:includes:license:*
.Sp
License references coverage of another license.
.Sp
Wildcard is the key to corresponding license pattern.
.IP "\(bu" 4
license:is:grant
.Sp
License is commonly granted by stating the whole license.
.IP "\(bu" 4
license:published:*
.Sp
License grant may include an \*(L"as published by...\*(R" reference.
.Sp
Third part is the key to corresponding trait pattern.
.IP "\(bu" 4
type:trait:publisher:*
.Sp
Pattern covers an \*(L"as published by ...\*(R" license grant phrase.
.Sp
Third part (optional) is the key to corresponding license pattern.
.IP "\(bu" 4
type:usage:*:*
.Sp
Pattern covers a specific usage of a license.
.Sp
Third part is the key of the corresponding non-usage-specific pattern.
.Sp
Fourth part is the key of the corresponding usage trait pattern.
.IP "\(bu" 4
type:combo
.Sp
Pattern covers a combination of multiple licenses.
.IP "\(bu" 4
type:group
.Sp
Pattern covers either of multiple licenses.
.IP "\(bu" 4
type:singleversion:*
.Sp
Pattern covers a specific version of a license.
.Sp
Third part is the key of the corresponding non-version-specific pattern.
.IP "\(bu" 4
type:trait
.Sp
Pattern covers a single trait occuring in licenses.
.IP "\(bu" 4
type:unversioned
.Sp
Pattern covers a license without versioning scheme.
.IP "\(bu" 4
type:versioned:decimal
.Sp
Pattern covers a license using decimal number versioning scheme.
.SH "EXAMPLES"
.IX Header "EXAMPLES"
.SS "Browse patterns"
.IX Subsection "Browse patterns"
The \*(L"official\*(R" way to browse patterns is using App::RegexpPatternUtils:
.PP
.Vb 1
\& show\-regexp\-pattern\-module \-\-page\-result \-\- License
.Ve
.PP
Unfortunately, App::RegexpPatternUtils has a deep dependency tree.
An alternative is to use Data::Printer and \f(CW\*(C`less\*(C'\fR:
.PP
.Vb 1
\& perl \-CS \-MRegexp::Pattern::License \-MDDP \-e \*(Aqp %Regexp::Pattern::License::RE, fulldump => 1, output => stdout\*(Aq | less \-RS
.Ve
.SH "AUTHOR"
.IX Header "AUTHOR"
Jonas Smedegaard \f(CW\*(C`\*(C'\fR
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
.Vb 1
\& Copyright © 2016\-2017 Jonas Smedegaard
.Ve
.PP
This program is free software; you can redistribute it and/or modify it
under the terms of the \s-1GNU\s0 General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any
later version.
.PP
This program is distributed in the hope that it will be useful, but
\&\s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0 See the \s-1GNU\s0
General Public License for more details.
.PP
You should have received a copy of the \s-1GNU\s0 General Public License along
with this program. If not, see .