.\" 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 .