.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" 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 "2023-08-08" "perl v5.36.0" "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.11.0 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use Regexp::Pattern::License; \& use Regexp::Pattern; \& \& my $string = \*(AqGNU General Public License version 3 or later\*(Aq; \& \& print "Found!\en" if $string =~ re( \*(AqLicense::gpl_3\*(Aq ); # prints "Found!" .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 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 addr_fsf_franklin .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 addr_fsf_franklin_steet .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 addr_fsf_mass .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 addr_fsf_temple .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 any_of .Sp \&\fISince v3.1.92.\fR .IP "\(bu" 4 by .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 by_apache .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 by_fsf .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 by_james_clark .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 by_psf .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 by_sam_hocevar .Sp \&\fISince v3.3.0.\fR .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 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_autoconf_2 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_autoconf_2_archive .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_autoconf_2_autotroll .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_autoconf_2_g10 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_autoconf_3 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_bison_1_24 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_bison_2_2 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_classpath_2 .IP "\(bu" 4 except_ecos_2 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 except_epl .IP "\(bu" 4 except_epl_mpl .IP "\(bu" 4 except_faust .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_font_2 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 except_gcc_2 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 except_gcc_3_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 except_gstreamer .IP "\(bu" 4 except_libtool .IP "\(bu" 4 except_mif .IP "\(bu" 4 except_openssl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_ocaml\-lgpl .IP "\(bu" 4 except_openssl\-lgpl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_openssl_s3 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_prefix_agpl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_prefix_generic .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_prefix_gpl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_prefix_gpl_clisp .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_prefix_lgpl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_proguard .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_gpl_1 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_gpl_eclipse .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_gpl_openssl .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_kernel .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_lgpl_1_1 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_qt_nosource .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_sdc .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_sollya_4_1 .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_warzone .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 except_wxwindows .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 except_xerces .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 fsf_unlimited .IP "\(bu" 4 fsf_unlimited_retention .IP "\(bu" 4 generated .Sp \&\fISince v3.4.0.\fR .IP "\(bu" 4 license_label .IP "\(bu" 4 license_label_spdx .Sp \&\fISince v3.9.0.\fR .IP "\(bu" 4 license_label_trove .Sp \&\fISince v3.1.100.\fR .IP "\(bu" 4 licensed_under .Sp \&\fISince v3.1.92.\fR .IP "\(bu" 4 usage_rfn .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 version .Sp Optionally provides the following numbered and named captures: .Sp .Vb 4 \& "Under GPL, v2 or later of the license." \& [ ] # \-> $& \& I # \-> $1, $\-{version_number} \& [ ] # \-> $2, $\-{version_later} \& \& "Under version 2 or 3 only of the GPL." \& [ ] # \-> $& \& I # \-> $1, $\-{version_number} \& I # \-> $3, $\-{version_number_2} \& [ ] # \-> $4, $\-{version_only} \& [] # \-> $5, $\-{version_of} .Ve .Sp \&\fICaptures stable since v3.11.0.\fR .IP "\(bu" 4 version_later .Sp Optionally provides the following numbered and named captures: .Sp .Vb 3 \& "Under GPLv2, or later of the license." \& [ ] # \-> $& \& [ ] # \-> $1, $\-{version_later} .Ve .Sp \&\fICaptures stable since v3.11.0.\fR .IP "\(bu" 4 version_numberstring .Sp Optionally provides the following numbered and named captures: .Sp .Vb 3 \& "Under GPL, v2 or later of the license." \& [ ] # \-> $& \& I # \-> $1, $\-{version_number} \& \& "Under version 2 or 3 only of the GPL." \& [ ] # \-> $& \& I # \-> $1, $\-{version_number} .Ve .Sp \&\fISince v3.1.92.\fR \&\fICaptures stable since v3.11.0.\fR .IP "\(bu" 4 version_only .Sp Optionally provides the following numbered and named captures: .Sp .Vb 3 \& "Under GPL version 2 only of the license." \& [ ] # \-> $& \& [ ] # \-> $1, $\-{version_only} .Ve .Sp \&\fICaptures stable since v3.11.0.\fR .IP "\(bu" 4 version_prefix .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 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 afl_1_2 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 afl_2 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 afl_2_1 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 afl_3 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 afmparse .IP "\(bu" 4 agpl .IP "\(bu" 4 agpl_1 .Sp \&\fISince v3.1.102.\fR .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 .Sp \&\fISince v3.1.91.\fR .IP "\(bu" 4 aladdin_9 .Sp \&\fISince v3.1.91.\fR .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 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 apache_1_1 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 apache_2 .Sp \&\fISince v3.1.95.\fR .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 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 artistic_1_cl8 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 artistic_1_perl .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 artistic_2 .IP "\(bu" 4 bahyph .IP "\(bu" 4 barr .IP "\(bu" 4 bdwgc .Sp \&\fISince v3.1.0.\fR .IP "\(bu" 4 bdwgc_matlab .Sp \&\fISince v3.1.0.\fR .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 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 bsd_1_clause .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_2_clause .IP "\(bu" 4 bsd_2_clause_freebsd .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_2_clause_netbsd .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_2_clause_patent .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_2_clause_views .IP "\(bu" 4 bsd_3_clause .IP "\(bu" 4 bsd_3_clause_attribution .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_clear .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_eclipse .Sp \&\fISince v3.9.0.\fR .IP "\(bu" 4 bsd_3_clause_lbnl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_modification .IP "\(bu" 4 bsd_3_clause_no_military_license .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_no_nuclear_license .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_no_nuclear_license_2014 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_no_nuclear_warranty .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 bsd_3_clause_refractions .Sp \&\fISince v3.9.0.\fR .IP "\(bu" 4 bsd_4_clause .IP "\(bu" 4 bsd_4_clause_uc .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 bsd_protection .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 bsl .Sp \&\fISince v3.1.90.\fR .IP "\(bu" 4 bsl_1 .Sp \&\fISince v3.1.90.\fR .IP "\(bu" 4 bzip2 .IP "\(bu" 4 bzip2_1_0_5 .IP "\(bu" 4 bzip2_1_0_6 .IP "\(bu" 4 cal .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 cal_1 .Sp \&\fISince v3.5.0.\fR .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 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc .IP "\(bu" 4 cc_by_nc_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_nd .IP "\(bu" 4 cc_by_nc_nd_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_nd_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_nd_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_nd_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_nd_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_sa .IP "\(bu" 4 cc_by_nc_sa_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_sa_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_sa_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_sa_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nc_sa_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nd .IP "\(bu" 4 cc_by_nd_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nd_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nd_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nd_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_nd_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_sa .IP "\(bu" 4 cc_by_sa_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_sa_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_sa_2_5 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_sa_3 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_by_sa_4 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_cc0 .IP "\(bu" 4 cc_cc0_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_devnations .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_devnations_2 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nc .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_nc_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_nc_sa .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nc_sa_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nc_sp .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nc_sp_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nd_nc .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nd_nc_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_nd .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_nd_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_pd .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_pdd .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_pddc .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_sa .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_sa_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cc_sampling .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_sampling_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cc_sp .IP "\(bu" 4 cc_sp_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 cddl .IP "\(bu" 4 cddl_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cddl_1_1 .Sp \&\fISince v3.1.101.\fR .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 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 cecill_c .IP "\(bu" 4 cecill_c_1 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 cnri_jython .IP "\(bu" 4 cnri_python .IP "\(bu" 4 cnri_python_gpl_compat .IP "\(bu" 4 condor .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 condor_1_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 cpal .IP "\(bu" 4 cpal_1 .IP "\(bu" 4 cpl .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cpl_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 cpol .IP "\(bu" 4 cpol_1_02 .IP "\(bu" 4 crossword .Sp \&\fISince v3.8.0.\fR .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 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 d_fsl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 d_fsl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dbad .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dbad_0_2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dbad_0_3 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dbad_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dbad_1_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dont_ask .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 dsdp .IP "\(bu" 4 ecl .IP "\(bu" 4 ecl_1 .IP "\(bu" 4 ecl_2 .IP "\(bu" 4 ecos_1_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ecos_2 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 efl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 efl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 efl_2 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 entessa .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 epl .IP "\(bu" 4 epl_1 .IP "\(bu" 4 epl_2 .IP "\(bu" 4 erlpl .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 erlpl_1_1 .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 eudatagrid .Sp \&\fISince v3.6.0.\fR .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 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 fair_source .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 fair_source_0_9 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 fal .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 fal_1_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 fal_1_2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 fal_1_3 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 festival .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 frameworx .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 frameworx_1 .Sp \&\fISince v3.6.0.\fR .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 glide .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 gpl .IP "\(bu" 4 gpl_1 .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 gpl_1_only .IP "\(bu" 4 gpl_1_or_later .IP "\(bu" 4 gpl_2 .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 gpl_2_only .IP "\(bu" 4 gpl_2_or_later .IP "\(bu" 4 gpl_3 .Sp \&\fISince v3.3.0.\fR .IP "\(bu" 4 gpl_3_only .IP "\(bu" 4 gpl_3_or_later .IP "\(bu" 4 gsoap .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 gsoap_1.3b .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 hpnd .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 hpnd_sell .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ibm_pibs .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 icu .IP "\(bu" 4 ijg .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 imlib2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 intel .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 ipa .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ipl .IP "\(bu" 4 ipl_1 .IP "\(bu" 4 isc .IP "\(bu" 4 jabberpl .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 json .Sp \&\fISince v3.1.90.\fR .IP "\(bu" 4 jython .Sp \&\fISince v3.1.90.\fR .IP "\(bu" 4 kevlin_henney .Sp \&\fISince v3.1.90.\fR .IP "\(bu" 4 leptonica .Sp \&\fISince v3.8.0.\fR .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 .Sp \&\fISince v3.1.0.\fR .IP "\(bu" 4 libpng .IP "\(bu" 4 libtiff .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 liliq_p .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 liliq_p_1_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 liliq_r .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 liliq_r_1_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 liliq_r_plus .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 liliq_r_plus_1_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 llgpl .IP "\(bu" 4 lpl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 lpl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 lpl_1_02 .Sp \&\fISince v3.6.0.\fR .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 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 mit_0 .Sp \&\fISince v3.6.0.\fR .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 .Sp \&\fISince v3.7.0.\fR .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 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 mit_openvision .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 mit_osf .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 mit_unixcrypt .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 mit_whatever .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 mit_widget .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 mit_xfig .Sp \&\fISince v3.7.0.\fR .IP "\(bu" 4 motosoto .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 mpich2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 mpl .IP "\(bu" 4 mpl_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 mpl_1_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 mpl_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 mpl_2_no_copyleft_exception .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ms_cl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ms_pl .IP "\(bu" 4 ms_rl .IP "\(bu" 4 mulan .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 mulan_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 mulan_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 multics .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 nasa .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 nasa_1_3 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 naumen .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 nbpl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 nbpl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ncsa .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ngpl .IP "\(bu" 4 nokia .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 nosl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 nosl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 npl .IP "\(bu" 4 npl_1 .IP "\(bu" 4 npl_1_1 .IP "\(bu" 4 nposl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 nposl_3 .Sp \&\fISince v3.6.0.\fR .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 odbl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 odbl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 odc_by .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 odc_by_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ofl .IP "\(bu" 4 ofl_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 ofl_1_no_rfn .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 ofl_1_rfn .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 ofl_1_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 ofl_1_1_no_rfn .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 ofl_1_1_rfn .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 ogc .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ogc_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ogtsl .IP "\(bu" 4 oldap .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_1_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_1_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_1_3 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_1_4 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_0_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_2_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_2_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_3 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_4 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_5 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_6 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_7 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 oldap_2_8 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 openssl .IP "\(bu" 4 opl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 opl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 oset_pl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 oset_pl_2_1 .Sp \&\fISince v3.6.0.\fR .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 pddl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 pddl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 peer_production .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 php .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 php_3 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 php_3_01 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 postgresql .IP "\(bu" 4 psf_2 .Sp \&\fISince v3.9.0.\fR .IP "\(bu" 4 public_domain .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 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 ruby .IP "\(bu" 4 rscpl .IP "\(bu" 4 sax_pd .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sds .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sds_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sgi_b .IP "\(bu" 4 sgi_b_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 sgi_b_1_1 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 sgi_b_2 .Sp \&\fISince v3.1.101.\fR .IP "\(bu" 4 simpl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 simpl_2 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 simple_w3c .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 simple_w3c_1_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 sissl .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 sissl_1_1 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 sissl_1_2 .Sp \&\fISince v3.5.0.\fR .IP "\(bu" 4 sleepycat .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 sncl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sncl_1_10 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sncl_2_0_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sncl_2_0_2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sncl_2_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sncl_2_3 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 spl .IP "\(bu" 4 spl_1 .IP "\(bu" 4 ssleay .Sp \&\fISince v3.2.0.\fR .IP "\(bu" 4 stlport .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 sugarcrm .IP "\(bu" 4 sugarcrm_1_1_3 .IP "\(bu" 4 tosl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 truecrypt .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 truecrypt_3 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ucl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ucl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 unicode_dfs .Sp \&\fISince v3.9.0.\fR .IP "\(bu" 4 unicode_dfs_2015 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 unicode_dfs_2016 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 unicode_strict .IP "\(bu" 4 unicode_tou .IP "\(bu" 4 unlicense .IP "\(bu" 4 upl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 upl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 vsl .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 vsl_1 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 vspl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 w3c .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 w3c_19980519 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 w3c_19980720 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 w3c_20021231 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 w3c_20150513 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 watcom .IP "\(bu" 4 watcom_1 .IP "\(bu" 4 wordnet .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 wtfpl .IP "\(bu" 4 wtfpl_1 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 wtfpl_2 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 wtfnmfpl .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 wtfnmfpl_1 .Sp \&\fISince v3.1.95.\fR .IP "\(bu" 4 x11 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 xfree86 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 xfree86_1_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 xnet .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 ypl .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ypl_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 ypl_1_1 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zed .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zend .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zend_2 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zimbra .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zimbra_1_3 .Sp \&\fISince v3.8.0.\fR .IP "\(bu" 4 zimbra_1_4 .IP "\(bu" 4 zlib .IP "\(bu" 4 zlib_acknowledgement .IP "\(bu" 4 zpl .Sp \&\fISince v3.1.102.\fR .IP "\(bu" 4 zpl_1 .Sp \&\fISince v3.1.102.\fR .IP "\(bu" 4 zpl_1_1 .Sp \&\fISince v3.1.102.\fR .IP "\(bu" 4 zpl_2 .Sp \&\fISince v3.1.102.\fR .IP "\(bu" 4 zpl_2_1 .Sp \&\fISince v3.1.102.\fR .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 .Sp \&\fISince v3.6.0.\fR .IP "\(bu" 4 perl .IP "\(bu" 4 python_2 .Sp \&\fISince v3.9.0.\fR .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 .Sp \&\fISince v3.6.0.\fR .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-1OBSOLETE OBJECTS\s0" .IX Subsection "OBSOLETE OBJECTS" License objects obsoleted by improved coverage of other objects, and provided only as dummy objects. .IP "\(bu" 4 or_at_option .Sp \&\fISince v3.11.0.\fR .IP "\(bu" 4 version_later_paragraph .Sp \&\fISince v3.11.0.\fR .IP "\(bu" 4 version_later_postfix .Sp \&\fISince v3.11.0.\fR .IP "\(bu" 4 version_number .Sp \&\fISince v3.11.0.\fR .IP "\(bu" 4 version_number_suffix .Sp \&\fISince v3.11.0.\fR .IP "\(bu" 4 python .Sp \&\fISince v3.9.0.\fR .Sp Replaced by \*(L"psf_2\*(R" and \*(L"python_2\*(R". .IP "\(bu" 4 wordnet_3 .Sp \&\fISince v3.9.0.\fR .Sp Replaced by \*(L"wordnet\*(R". .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\-2021 Jonas Smedegaard \& \& Copyright © 2017\-2021 Purism SPC .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 .