├── .mailmap ├── .gitignore ├── t ├── 01-basic.t └── 02-Acme-o_o.t ├── anotherlib └── Acme │ └── o_o.pm ├── inc └── MungeInstallers.pm ├── Changes ├── dist.ini ├── INSTALL ├── lib └── Acme │ └── LookOfDisapproval.pm ├── README.pod ├── CONTRIBUTING └── LICENCE /.mailmap: -------------------------------------------------------------------------------- 1 | # https://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html#_mapping_authors 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.ackrc 2 | /.build/ 3 | !/.gitignore 4 | /.latest 5 | /Acme-LookOfDisapproval-*/ 6 | /Acme-LookOfDisapproval-*.tar.gz 7 | /TODO 8 | -------------------------------------------------------------------------------- /t/01-basic.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | # vim: set ts=8 sts=2 sw=2 tw=100 et : 4 | 5 | use Test::More 0.88; 6 | use Test::Warnings 0.009 ':no_end_test', ':all'; 7 | use Acme::LookOfDisapproval; 8 | 9 | my $line; my $file = __FILE__; 10 | is( 11 | warning { ಠ_ಠ('oh noes'); $line = __LINE__ }, 12 | "oh noes at $file line $line.\n", 13 | 'warning appears, and with the right file and line', 14 | ); 15 | 16 | had_no_warnings if $ENV{AUTHOR_TESTING}; 17 | done_testing; 18 | -------------------------------------------------------------------------------- /t/02-Acme-o_o.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | # vim: set ts=8 sts=2 sw=2 tw=100 et : 4 | 5 | use open ':std', ':encoding(UTF-8)'; # force stdin, stdout, stderr into utf8 6 | use Test::More 0.88; 7 | use Test::Warnings 0.009 ':no_end_test', ':all'; 8 | use utf8; 9 | use Acme::ಠ_ಠ; 10 | use JSON::PP; 11 | 12 | my $line; my $file = __FILE__; 13 | is( 14 | warning { ಠ_ಠ('oh noes'); $line = __LINE__ }, 15 | "oh noes at $file line $line.\n", 16 | 'warning appears, and with the right file and line', 17 | ); 18 | 19 | diag '%INC is: ' . JSON::PP->new->ascii->canonical->pretty->encode(\%INC); 20 | 21 | had_no_warnings if $ENV{AUTHOR_TESTING}; 22 | done_testing; 23 | -------------------------------------------------------------------------------- /anotherlib/Acme/o_o.pm: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use utf8; 4 | package Acme::ಠ_ಠ; 5 | # vim: set ts=8 sts=2 sw=2 tw=100 et : 6 | # ABSTRACT: Send warnings with ಠ_ಠ 7 | 8 | our $VERSION = '0.007'; 9 | 10 | use Acme::LookOfDisapproval; 11 | our @EXPORT = ('ಠ_ಠ'); 12 | 13 | sub import { 14 | goto &Acme::LookOfDisapproval::import; 15 | } 16 | 17 | 1; 18 | __END__ 19 | 20 | =pod 21 | 22 | =head1 SYNOPSIS 23 | 24 | use utf8; 25 | use Acme::ಠ_ಠ; 26 | ಠ_ಠ 'you did something dumb'; 27 | 28 | =head1 DESCRIPTION 29 | 30 | See L. 31 | 32 | =for stopwords unicode 33 | 34 | This module also serves as a test of unicode module names. I have no idea if 35 | this will work -- let's find out!!! 36 | 37 | =head1 FUNCTIONS 38 | 39 | =head2 C<ಠ_ಠ> 40 | 41 | Behaves identically to L. 42 | 43 | =cut 44 | -------------------------------------------------------------------------------- /inc/MungeInstallers.pm: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | package inc::MungeInstallers; 4 | # vim: set ts=8 sts=2 sw=2 tw=100 et : 5 | 6 | use utf8; 7 | use Moose; 8 | with 'Dist::Zilla::Role::InstallTool'; 9 | use namespace::autoclean; 10 | 11 | # TODO - this should really be a separate phase that runs after InstallTool - 12 | # until then, all we can do is die if we are run too soon 13 | sub setup_installer { 14 | my $self = shift; 15 | 16 | my @build_files = grep $_->name eq 'Build.PL', @{ $self->zilla->files }; 17 | 18 | $self->log_fatal('No Build.PL was found to munge!') 19 | if @build_files != 1; 20 | 21 | for my $file (@build_files) { 22 | # check for template markers in file content 23 | $self->log_fatal([ 'ran too soon, before %s template(s) evaluated', $file->name ]) 24 | if $file->content =~ /\{\{/; 25 | 26 | $file->content($file->content . <<'COPY_MODULE'); 27 | 28 | use utf8; 29 | use File::Spec::Functions; 30 | my $source = catfile(qw(anotherlib Acme o_o.pm)); 31 | open my $source_fh, '<', $source or die "cannot open $source for reading: $!"; 32 | my $dest = catfile(qw(lib Acme ಠ_ಠ.pm)); 33 | open my $dest_fh, '>', $dest or die "cannot create $dest for writing: $!"; 34 | local $/; 35 | print $dest_fh (<$source_fh>); 36 | close $source_fh; 37 | close $dest_fh; 38 | COPY_MODULE 39 | } 40 | return; 41 | } 42 | 43 | __PACKAGE__->meta->make_immutable; 44 | -------------------------------------------------------------------------------- /Changes: -------------------------------------------------------------------------------- 1 | Revision history for Acme-LookOfDisapproval 2 | 3 | {{ $NEXT }} 4 | 5 | 0.008 2025-01-09 19:59:59Z 6 | - various toolchain updates, now using Dist::Zilla again. 7 | 8 | 0.007 2018-09-02 21:00:36Z 9 | - switch from JSON to JSON::PP 10 | - many fixes to build infrastructure to keep pace with changes to 11 | the tooling ecosystem 12 | 13 | 0.006 2013-11-29 18:22:26Z 14 | - Acme::ಠ_ಠ is back, with a lot of convoluted hoop-jumping to bypass 15 | various broken bits of the toolchain (see git commit for details) 16 | 17 | 0.005 2013-10-26 05:02:09Z 18 | - now packaging with Dist::Zilla 5.0 19 | - required removing Acme::ಠ_ಠ, pending resolution of issues in 20 | PPI, Module::Runtime and Params::Util 21 | - required removing minimum version and pod coverage tests, pending 22 | resolution of issues in Test::Pod::Coverage and PPI 23 | 24 | 0.004 2013-06-30 25 | - more metadata added, including git repository and bugtracker 26 | location 27 | - compilation test fixed (see perl RT#118707) 28 | 29 | 0.003 2013-06-26 30 | - minimum perl version bumped to 5.16.0 (see 31 | https://metacpan.org/module/perl5160delta#Unicode-Symbol-Names) 32 | 33 | 0.002 2013-06-22 34 | - add missing prereqs to metadata 35 | 36 | 0.001 2013-06-21 37 | - Initial release. 38 | 39 | -------------------------------------------------------------------------------- /dist.ini: -------------------------------------------------------------------------------- 1 | name = Acme-LookOfDisapproval 2 | author = Karen Etheridge 3 | copyright_holder = Karen Etheridge 4 | copyright_year = 2013 5 | license = Perl_5 6 | 7 | ; Dist::Zilla version required 8 | :version = 5 9 | 10 | [FileFinder::ByName / AnotherLib] 11 | dir = anotherlib 12 | 13 | [@Author::ETHER] 14 | :version = 0.103 15 | installer[0] = MakeMaker::Fallback 16 | installer[1] = ModuleBuildTiny::Fallback 17 | MakeMaker::Fallback.:version = 0.029 18 | MakeMaker::Fallback.header = use utf8; 19 | MakeMaker::Fallback.WriteMakefile_arg = PM => { 'lib/Acme/LookOfDisapproval.pm' => '$(INST_LIB)/Acme/LookOfDisapproval.pm', 'anotherlib/Acme/o_o.pm' => '$(INST_LIB)/Acme/ಠ_ಠ.pm' } 20 | ModuleBuildTiny.static = no ; MBT's heuristics are weaker than [StaticInstall]'s 21 | -remove = PodCoverageTests ; "Invalid and untaintable filename" 22 | -remove = Test::MinimumVersion ; PPI cannot parse either .pm file 23 | -remove = MetaProvides::Package ; Acme::ಠ_ಠ is rejected by CPAN::Meta::Validator 24 | AutoPrereqs.skip = ^Acme::ಠ_ಠ$ 25 | Prereqs::AuthorDeps.exclude[0] = MungeInstallers 26 | Prereqs::AuthorDeps.exclude[1] = Metadata 27 | Test::Compile.:version = 2.038 ; for 'file' option 28 | Test::Compile.file = Acme/ಠ_ಠ.pm 29 | Test::MinimumVersion.max_target_perl = 5.016 30 | Test::NoTabs.:version = 0.06 31 | Test::NoTabs.file = lib/Acme/ಠ_ಠ.pm 32 | Test::EOL.:version = 0.17 33 | Test::EOL.file = lib/Acme/ಠ_ಠ.pm 34 | PodWeaver.finder[0] = :InstallModules 35 | PodWeaver.finder[1] = AnotherLib 36 | PromptIfStale.skip = MungeInstallers 37 | 38 | [Prereqs / RuntimeRequires] 39 | perl = 5.016 ; FIXME - this should be autodetected, via unicode in symbol names 40 | 41 | [Prereqs / ConfigureRequires] 42 | File::Spec::Functions = 0 43 | 44 | ; authordep Pod::Weaver = 4 45 | 46 | ; adds a line to Build.PL which copies anotherlib/Acme/o_o.pm to lib/Acme/ಠ_ಠ.pm 47 | [=inc::MungeInstallers] 48 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | This is the Perl distribution Acme-LookOfDisapproval. 2 | 3 | Installing Acme-LookOfDisapproval is straightforward. 4 | 5 | ## Installation with cpanm 6 | 7 | If you have cpanm, you only need one line: 8 | 9 | % cpanm Acme::LookOfDisapproval 10 | 11 | If it does not have permission to install modules to the current perl, cpanm 12 | will automatically set up and install to a local::lib in your home directory. 13 | See the local::lib documentation (https://metacpan.org/pod/local::lib) for 14 | details on enabling it in your environment. 15 | 16 | ## Installing with the CPAN shell 17 | 18 | Alternatively, if your CPAN shell is set up, you should just be able to do: 19 | 20 | % cpan Acme::LookOfDisapproval 21 | 22 | ## Manual installation 23 | 24 | As a last resort, you can manually install it. If you have not already 25 | downloaded the release tarball, you can find the download link on the module's 26 | MetaCPAN page: https://metacpan.org/pod/Acme::LookOfDisapproval 27 | 28 | Untar the tarball, install configure prerequisites (see below), then build it: 29 | 30 | % perl Build.PL 31 | % ./Build && ./Build test 32 | 33 | Then install it: 34 | 35 | % ./Build install 36 | 37 | Or the more portable variation: 38 | 39 | % perl Build.PL 40 | % perl Build 41 | % perl Build test 42 | % perl Build install 43 | 44 | If your perl is system-managed, you can create a local::lib in your home 45 | directory to install modules to. For details, see the local::lib documentation: 46 | https://metacpan.org/pod/local::lib 47 | 48 | The prerequisites of this distribution will also have to be installed manually. The 49 | prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated 50 | by running the manual build process described above. 51 | 52 | ## Configure Prerequisites 53 | 54 | This distribution requires other modules to be installed before this 55 | distribution's installer can be run. They can be found under the 56 | "configure_requires" key of META.yml or the 57 | "{prereqs}{configure}{requires}" key of META.json. 58 | 59 | ## Other Prerequisites 60 | 61 | This distribution may require additional modules to be installed after running 62 | Build.PL. 63 | Look for prerequisites in the following phases: 64 | 65 | * to run ./Build, PHASE = build 66 | * to use the module code itself, PHASE = runtime 67 | * to run tests, PHASE = test 68 | 69 | They can all be found in the "PHASE_requires" key of MYMETA.yml or the 70 | "{prereqs}{PHASE}{requires}" key of MYMETA.json. 71 | 72 | ## Documentation 73 | 74 | Acme-LookOfDisapproval documentation is available as POD. 75 | You can run `perldoc` from a shell to read the documentation: 76 | 77 | % perldoc Acme::LookOfDisapproval 78 | 79 | For more information on installing Perl modules via CPAN, please see: 80 | https://www.cpan.org/modules/INSTALL.html 81 | -------------------------------------------------------------------------------- /lib/Acme/LookOfDisapproval.pm: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use utf8; 4 | package Acme::LookOfDisapproval; 5 | # vim: set ts=8 sts=2 sw=2 tw=100 et : 6 | # ABSTRACT: Send warnings with ಠ_ಠ 7 | # KEYWORDS: unicode canary warning utf8 symbol ಠ_ಠ 8 | 9 | our $VERSION = '0.009'; 10 | 11 | use Exporter; 12 | our @EXPORT = ('ಠ_ಠ'); 13 | 14 | sub import { 15 | utf8->import; 16 | goto &Exporter::import; 17 | } 18 | 19 | sub ಠ_ಠ { goto &CORE::warn } 20 | 21 | 1; 22 | __END__ 23 | 24 | =pod 25 | 26 | =head1 SYNOPSIS 27 | 28 | use Acme::LookOfDisapproval; 29 | ಠ_ಠ 'you did something dumb'; 30 | 31 | =head1 DESCRIPTION 32 | 33 | Use C<ಠ_ಠ> whenever you would use C, to express your profound 34 | disapproval. 35 | 36 | =head1 FUNCTIONS 37 | 38 | =head2 C<ಠ_ಠ> 39 | 40 | Behaves identically to L. 41 | 42 | =head1 BACKGROUND 43 | 44 | =for stopwords unicode 45 | 46 | I wrote this as an exercise in using unicode in code, not just in a string. 47 | Then, it became an interesting learning experience in how to cleanly map to a 48 | core function, and re-exporting symbols. 49 | 50 | The first draft did this: 51 | 52 | use Carp 'carp'; 53 | sub ಠ_ಠ { local $Carp::CarpLevel = $Carp::CarpLevel + 1; carp @_; } 54 | 55 | And then it became: 56 | 57 | BEGIN { 58 | no strict 'refs'; 59 | *{__PACKAGE__ . '::ಠ_ಠ'} = *CORE::warn; 60 | } 61 | 62 | But this is even nicer: 63 | 64 | sub ಠ_ಠ { goto &CORE::warn } 65 | 66 | I also played around with L to manage the export of both the 67 | L pragma and the C<ಠ_ಠ> symbol. However, that's just silly when we can 68 | call C directly on L (it's a pragma, so the caller doesn't 69 | matter -- only when it is called: during the caller's compilation cycle), 70 | and then we can export our symbol by using L to jump to L. 71 | 72 | =for stopwords dzil utf8 73 | 74 | I also discovered while writing this distribution that L is not 75 | able to munge files with utf8 characters, therefore I had to switch to packaging 76 | this distribution with vanilla L; also, a number of the 77 | author and release tests that would have been added by dzil automatically 78 | didn't work either (for example, see C -- C<< qx(^$X "require $_") >> 79 | both needs the C<:binmode> or C<:encoding(UTF-8)> layer applied to C, and 80 | requires the L pragma applied in the sub-perl (leading to more patches). 81 | 82 | After pushing several patches to core L and some independently-distributed plugins, 83 | I have been able to switch back to packaging with L. 84 | Everything is now much more unicode-clean! 💃 85 | 86 | =head1 SEE ALSO 87 | 88 | =for :list 89 | * L 90 | * L - another example of unicode sub names 91 | 92 | =cut 93 | -------------------------------------------------------------------------------- /README.pod: -------------------------------------------------------------------------------- 1 | =pod 2 | 3 | =encoding UTF-8 4 | 5 | =head1 NAME 6 | 7 | Acme::LookOfDisapproval - Send warnings with ಠ_ಠ 8 | 9 | =head1 VERSION 10 | 11 | version 0.008 12 | 13 | =head1 SYNOPSIS 14 | 15 | use Acme::LookOfDisapproval; 16 | ಠ_ಠ 'you did something dumb'; 17 | 18 | =head1 DESCRIPTION 19 | 20 | Use C<ಠ_ಠ> whenever you would use C, to express your profound 21 | disapproval. 22 | 23 | =head1 FUNCTIONS 24 | 25 | =head2 C<ಠ_ಠ> 26 | 27 | Behaves identically to L. 28 | 29 | =head1 BACKGROUND 30 | 31 | =for stopwords unicode 32 | 33 | I wrote this as an exercise in using unicode in code, not just in a string. 34 | Then, it became an interesting learning experience in how to cleanly map to a 35 | core function, and re-exporting symbols. 36 | 37 | The first draft did this: 38 | 39 | use Carp 'carp'; 40 | sub ಠ_ಠ { local $Carp::CarpLevel = $Carp::CarpLevel + 1; carp @_; } 41 | 42 | And then it became: 43 | 44 | BEGIN { 45 | no strict 'refs'; 46 | *{__PACKAGE__ . '::ಠ_ಠ'} = *CORE::warn; 47 | } 48 | 49 | But this is even nicer: 50 | 51 | sub ಠ_ಠ { goto &CORE::warn } 52 | 53 | I also played around with L to manage the export of both the 54 | L pragma and the C<ಠ_ಠ> symbol. However, that's just silly when we can 55 | call C directly on L (it's a pragma, so the caller doesn't 56 | matter -- only when it is called: during the caller's compilation cycle), 57 | and then we can export our symbol by using L to jump to L. 58 | 59 | =for stopwords dzil utf8 60 | 61 | I also discovered while writing this distribution that L is not 62 | able to munge files with utf8 characters, therefore I had to switch to packaging 63 | this distribution with vanilla L; also, a number of the 64 | author and release tests that would have been added by dzil automatically 65 | didn't work either (for example, see C -- C<< qx(^$X "require $_") >> 66 | both needs the C<:binmode> or C<:encoding(UTF-8)> layer applied to C, and 67 | requires the L pragma applied in the sub-perl (leading to more patches). 68 | 69 | After pushing several patches to core L and some independently-distributed plugins, 70 | I have been able to switch back to packaging with L. 71 | Everything is now much more unicode-clean! 💃 72 | 73 | =head1 SEE ALSO 74 | 75 | =over 4 76 | 77 | =item * 78 | 79 | L 80 | 81 | =item * 82 | 83 | L - another example of unicode sub names 84 | 85 | =back 86 | 87 | =head1 SUPPORT 88 | 89 | Bugs may be submitted through L 90 | (or L). 91 | 92 | I am also usually active on irc, as 'ether' at C and C. 93 | 94 | =head1 AUTHOR 95 | 96 | Karen Etheridge 97 | 98 | =head1 COPYRIGHT AND LICENCE 99 | 100 | This software is copyright (c) 2013 by Karen Etheridge. 101 | 102 | This is free software; you can redistribute it and/or modify it under 103 | the same terms as the Perl 5 programming language system itself. 104 | 105 | =cut 106 | -------------------------------------------------------------------------------- /CONTRIBUTING: -------------------------------------------------------------------------------- 1 | 2 | CONTRIBUTING 3 | 4 | Thank you for considering contributing to this distribution. This file 5 | contains instructions that will help you work with the source code. 6 | 7 | PLEASE NOTE that if you have any questions or difficulties, you can reach the 8 | maintainer(s) through the bug queue described later in this document 9 | (preferred), or by emailing the releaser directly. You are not required to 10 | follow any of the steps in this document to submit a patch or bug report; 11 | these are just recommendations, intended to help you (and help us help you 12 | faster). 13 | 14 | The distribution is managed with Dist::Zilla (https://metacpan.org/release/Dist-Zilla). 15 | This means than many of the usual files you might expect are not in the 16 | repository, but are generated at release time (e.g. Makefile.PL). 17 | 18 | However, you can run tests directly using the 'prove' tool: 19 | 20 | $ prove -l 21 | $ prove -lv t/some_test_file.t 22 | $ prove -lvr t/ 23 | 24 | In most cases, 'prove' is entirely sufficient for you to test any patches you 25 | have. 26 | 27 | You may need to satisfy some dependencies. The easiest way to satisfy 28 | dependencies is to install the last release -- this is available at 29 | https://metacpan.org/release/Acme-LookOfDisapproval 30 | 31 | If you use cpanminus, you can do it without downloading the tarball first: 32 | 33 | $ cpanm --reinstall --installdeps --with-recommends Acme::LookOfDisapproval 34 | 35 | Dist::Zilla is a very powerful authoring tool, but requires a number of 36 | author-specific plugins. If you would like to use it for contributing, 37 | install it from CPAN, then run one of the following commands, depending on 38 | your CPAN client: 39 | 40 | $ cpan `dzil authordeps --missing` 41 | or 42 | $ dzil authordeps --missing | cpanm 43 | 44 | You should then also install any additional requirements not needed by the 45 | dzil build but may be needed by tests or other development: 46 | 47 | $ cpan `dzil listdeps --author --missing` 48 | or 49 | $ dzil listdeps --author --missing | cpanm 50 | 51 | Or, you can use the 'dzil stale' command to install all requirements at once: 52 | 53 | $ cpan Dist::Zilla::App::Command::stale 54 | $ cpan `dzil stale --all` 55 | or 56 | $ cpanm Dist::Zilla::App::Command::stale 57 | $ dzil stale --all | cpanm 58 | 59 | You can also do this via cpanm directly: 60 | 61 | $ cpanm --reinstall --installdeps --with-develop --with-recommends Acme::LookOfDisapproval 62 | 63 | Once installed, here are some dzil commands you might try: 64 | 65 | $ dzil build 66 | $ dzil test 67 | $ dzil test --release 68 | $ dzil xtest 69 | $ dzil listdeps --json 70 | $ dzil build --notgz 71 | 72 | You can learn more about Dist::Zilla at http://dzil.org/. 73 | 74 | The code for this distribution is hosted at GitHub. The repository is: 75 | 76 | https://github.com/karenetheridge/Acme-LookOfDisapproval 77 | 78 | You can submit code changes by forking the repository, pushing your code 79 | changes to your clone, and then submitting a pull request. Please include a 80 | suitable end-user-oriented entry in the Changes file describing your change. 81 | Detailed instructions for doing that is available here: 82 | 83 | https://help.github.com/articles/creating-a-pull-request 84 | 85 | Generated files such as README, CONTRIBUTING, Makefile.PL, LICENSE etc should 86 | *not* be included in your pull request, as they will be updated automatically 87 | during the next release. 88 | 89 | If you have found a bug, but do not have an accompanying patch to fix it, you 90 | can submit an issue report here: 91 | https://rt.cpan.org/Public/Dist/Display.html?Name=Acme-LookOfDisapproval 92 | or via email: bug-Acme-LookOfDisapproval@rt.cpan.org 93 | This is a good place to send your questions about the usage of this distribution. 94 | 95 | If you send me a patch or pull request, your name and email address will be 96 | included in the documentation as a contributor (using the attribution on the 97 | commit or patch), unless you specifically request for it not to be. If you 98 | wish to be listed under a different name or address, you should submit a pull 99 | request to the .mailmap file to contain the correct mapping. 100 | 101 | 102 | This file was generated via Dist::Zilla::Plugin::GenerateFile::FromShareDir 0.015 103 | from a template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.164. 104 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | This software is copyright (c) 2013 by Karen Etheridge. 2 | 3 | This is free software; you can redistribute it and/or modify it under 4 | the same terms as the Perl 5 programming language system itself. 5 | 6 | Terms of the Perl programming language system itself 7 | 8 | a) the GNU General Public License as published by the Free 9 | Software Foundation; either version 1, or (at your option) any 10 | later version, or 11 | b) the "Artistic License" 12 | 13 | --- The GNU General Public License, Version 1, February 1989 --- 14 | 15 | This software is Copyright (c) 2013 by Karen Etheridge. 16 | 17 | This is free software, licensed under: 18 | 19 | The GNU General Public License, Version 1, February 1989 20 | 21 | GNU GENERAL PUBLIC LICENSE 22 | Version 1, February 1989 23 | 24 | Copyright (C) 1989 Free Software Foundation, Inc. 25 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 26 | 27 | Everyone is permitted to copy and distribute verbatim copies 28 | of this license document, but changing it is not allowed. 29 | 30 | Preamble 31 | 32 | The license agreements of most software companies try to keep users 33 | at the mercy of those companies. By contrast, our General Public 34 | License is intended to guarantee your freedom to share and change free 35 | software--to make sure the software is free for all its users. The 36 | General Public License applies to the Free Software Foundation's 37 | software and to any other program whose authors commit to using it. 38 | You can use it for your programs, too. 39 | 40 | When we speak of free software, we are referring to freedom, not 41 | price. Specifically, the General Public License is designed to make 42 | sure that you have the freedom to give away or sell copies of free 43 | software, that you receive source code or can get it if you want it, 44 | that you can change the software or use pieces of it in new free 45 | programs; and that you know you can do these things. 46 | 47 | To protect your rights, we need to make restrictions that forbid 48 | anyone to deny you these rights or to ask you to surrender the rights. 49 | These restrictions translate to certain responsibilities for you if you 50 | distribute copies of the software, or if you modify it. 51 | 52 | For example, if you distribute copies of a such a program, whether 53 | gratis or for a fee, you must give the recipients all the rights that 54 | you have. You must make sure that they, too, receive or can get the 55 | source code. And you must tell them their rights. 56 | 57 | We protect your rights with two steps: (1) copyright the software, and 58 | (2) offer you this license which gives you legal permission to copy, 59 | distribute and/or modify the software. 60 | 61 | Also, for each author's protection and ours, we want to make certain 62 | that everyone understands that there is no warranty for this free 63 | software. If the software is modified by someone else and passed on, we 64 | want its recipients to know that what they have is not the original, so 65 | that any problems introduced by others will not reflect on the original 66 | authors' reputations. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | GNU GENERAL PUBLIC LICENSE 72 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 73 | 74 | 0. This License Agreement applies to any program or other work which 75 | contains a notice placed by the copyright holder saying it may be 76 | distributed under the terms of this General Public License. The 77 | "Program", below, refers to any such program or work, and a "work based 78 | on the Program" means either the Program or any work containing the 79 | Program or a portion of it, either verbatim or with modifications. Each 80 | licensee is addressed as "you". 81 | 82 | 1. You may copy and distribute verbatim copies of the Program's source 83 | code as you receive it, in any medium, provided that you conspicuously and 84 | appropriately publish on each copy an appropriate copyright notice and 85 | disclaimer of warranty; keep intact all the notices that refer to this 86 | General Public License and to the absence of any warranty; and give any 87 | other recipients of the Program a copy of this General Public License 88 | along with the Program. You may charge a fee for the physical act of 89 | transferring a copy. 90 | 91 | 2. You may modify your copy or copies of the Program or any portion of 92 | it, and copy and distribute such modifications under the terms of Paragraph 93 | 1 above, provided that you also do the following: 94 | 95 | a) cause the modified files to carry prominent notices stating that 96 | you changed the files and the date of any change; and 97 | 98 | b) cause the whole of any work that you distribute or publish, that 99 | in whole or in part contains the Program or any part thereof, either 100 | with or without modifications, to be licensed at no charge to all 101 | third parties under the terms of this General Public License (except 102 | that you may choose to grant warranty protection to some or all 103 | third parties, at your option). 104 | 105 | c) If the modified program normally reads commands interactively when 106 | run, you must cause it, when started running for such interactive use 107 | in the simplest and most usual way, to print or display an 108 | announcement including an appropriate copyright notice and a notice 109 | that there is no warranty (or else, saying that you provide a 110 | warranty) and that users may redistribute the program under these 111 | conditions, and telling the user how to view a copy of this General 112 | Public License. 113 | 114 | d) You may charge a fee for the physical act of transferring a 115 | copy, and you may at your option offer warranty protection in 116 | exchange for a fee. 117 | 118 | Mere aggregation of another independent work with the Program (or its 119 | derivative) on a volume of a storage or distribution medium does not bring 120 | the other work under the scope of these terms. 121 | 122 | 3. You may copy and distribute the Program (or a portion or derivative of 123 | it, under Paragraph 2) in object code or executable form under the terms of 124 | Paragraphs 1 and 2 above provided that you also do one of the following: 125 | 126 | a) accompany it with the complete corresponding machine-readable 127 | source code, which must be distributed under the terms of 128 | Paragraphs 1 and 2 above; or, 129 | 130 | b) accompany it with a written offer, valid for at least three 131 | years, to give any third party free (except for a nominal charge 132 | for the cost of distribution) a complete machine-readable copy of the 133 | corresponding source code, to be distributed under the terms of 134 | Paragraphs 1 and 2 above; or, 135 | 136 | c) accompany it with the information you received as to where the 137 | corresponding source code may be obtained. (This alternative is 138 | allowed only for noncommercial distribution and only if you 139 | received the program in object code or executable form alone.) 140 | 141 | Source code for a work means the preferred form of the work for making 142 | modifications to it. For an executable file, complete source code means 143 | all the source code for all modules it contains; but, as a special 144 | exception, it need not include source code for modules which are standard 145 | libraries that accompany the operating system on which the executable 146 | file runs, or for standard header files or definitions files that 147 | accompany that operating system. 148 | 149 | 4. You may not copy, modify, sublicense, distribute or transfer the 150 | Program except as expressly provided under this General Public License. 151 | Any attempt otherwise to copy, modify, sublicense, distribute or transfer 152 | the Program is void, and will automatically terminate your rights to use 153 | the Program under this License. However, parties who have received 154 | copies, or rights to use copies, from you under this General Public 155 | License will not have their licenses terminated so long as such parties 156 | remain in full compliance. 157 | 158 | 5. By copying, distributing or modifying the Program (or any work based 159 | on the Program) you indicate your acceptance of this license to do so, 160 | and all its terms and conditions. 161 | 162 | 6. Each time you redistribute the Program (or any work based on the 163 | Program), the recipient automatically receives a license from the original 164 | licensor to copy, distribute or modify the Program subject to these 165 | terms and conditions. You may not impose any further restrictions on the 166 | recipients' exercise of the rights granted herein. 167 | 168 | 7. The Free Software Foundation may publish revised and/or new versions 169 | of the General Public License from time to time. Such new versions will 170 | be similar in spirit to the present version, but may differ in detail to 171 | address new problems or concerns. 172 | 173 | Each version is given a distinguishing version number. If the Program 174 | specifies a version number of the license which applies to it and "any 175 | later version", you have the option of following the terms and conditions 176 | either of that version or of any later version published by the Free 177 | Software Foundation. If the Program does not specify a version number of 178 | the license, you may choose any version ever published by the Free Software 179 | Foundation. 180 | 181 | 8. If you wish to incorporate parts of the Program into other free 182 | programs whose distribution conditions are different, write to the author 183 | to ask for permission. For software which is copyrighted by the Free 184 | Software Foundation, write to the Free Software Foundation; we sometimes 185 | make exceptions for this. Our decision will be guided by the two goals 186 | of preserving the free status of all derivatives of our free software and 187 | of promoting the sharing and reuse of software generally. 188 | 189 | NO WARRANTY 190 | 191 | 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 192 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 193 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 194 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 195 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 196 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 197 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 198 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 199 | REPAIR OR CORRECTION. 200 | 201 | 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 202 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 203 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 204 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 205 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 206 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 207 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 208 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 209 | POSSIBILITY OF SUCH DAMAGES. 210 | 211 | END OF TERMS AND CONDITIONS 212 | 213 | Appendix: How to Apply These Terms to Your New Programs 214 | 215 | If you develop a new program, and you want it to be of the greatest 216 | possible use to humanity, the best way to achieve this is to make it 217 | free software which everyone can redistribute and change under these 218 | terms. 219 | 220 | To do so, attach the following notices to the program. It is safest to 221 | attach them to the start of each source file to most effectively convey 222 | the exclusion of warranty; and each file should have at least the 223 | "copyright" line and a pointer to where the full notice is found. 224 | 225 | 226 | Copyright (C) 19yy 227 | 228 | This program is free software; you can redistribute it and/or modify 229 | it under the terms of the GNU General Public License as published by 230 | the Free Software Foundation; either version 1, or (at your option) 231 | any later version. 232 | 233 | This program is distributed in the hope that it will be useful, 234 | but WITHOUT ANY WARRANTY; without even the implied warranty of 235 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 236 | GNU General Public License for more details. 237 | 238 | You should have received a copy of the GNU General Public License 239 | along with this program; if not, write to the Free Software 240 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA 241 | 242 | 243 | Also add information on how to contact you by electronic and paper mail. 244 | 245 | If the program is interactive, make it output a short notice like this 246 | when it starts in an interactive mode: 247 | 248 | Gnomovision version 69, Copyright (C) 19xx name of author 249 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 250 | This is free software, and you are welcome to redistribute it 251 | under certain conditions; type `show c' for details. 252 | 253 | The hypothetical commands `show w' and `show c' should show the 254 | appropriate parts of the General Public License. Of course, the 255 | commands you use may be called something other than `show w' and `show 256 | c'; they could even be mouse-clicks or menu items--whatever suits your 257 | program. 258 | 259 | You should also get your employer (if you work as a programmer) or your 260 | school, if any, to sign a "copyright disclaimer" for the program, if 261 | necessary. Here a sample; alter the names: 262 | 263 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 264 | program `Gnomovision' (a program to direct compilers to make passes 265 | at assemblers) written by James Hacker. 266 | 267 | , 1 April 1989 268 | Ty Coon, President of Vice 269 | 270 | That's all there is to it! 271 | 272 | 273 | --- The Perl Artistic License 1.0 --- 274 | 275 | This software is Copyright (c) 2013 by Karen Etheridge. 276 | 277 | This is free software, licensed under: 278 | 279 | The Perl Artistic License 1.0 280 | 281 | 282 | 283 | 284 | 285 | The "Artistic License" 286 | 287 | Preamble 288 | 289 | The intent of this document is to state the conditions under which a 290 | Package may be copied, such that the Copyright Holder maintains some 291 | semblance of artistic control over the development of the package, 292 | while giving the users of the package the right to use and distribute 293 | the Package in a more-or-less customary fashion, plus the right to make 294 | reasonable modifications. 295 | 296 | Definitions: 297 | 298 | "Package" refers to the collection of files distributed by the 299 | Copyright Holder, and derivatives of that collection of files 300 | created through textual modification. 301 | 302 | "Standard Version" refers to such a Package if it has not been 303 | modified, or has been modified in accordance with the wishes 304 | of the Copyright Holder as specified below. 305 | 306 | "Copyright Holder" is whoever is named in the copyright or 307 | copyrights for the package. 308 | 309 | "You" is you, if you're thinking about copying or distributing 310 | this Package. 311 | 312 | "Reasonable copying fee" is whatever you can justify on the 313 | basis of media cost, duplication charges, time of people involved, 314 | and so on. (You will not be required to justify it to the 315 | Copyright Holder, but only to the computing community at large 316 | as a market that must bear the fee.) 317 | 318 | "Freely Available" means that no fee is charged for the item 319 | itself, though there may be fees involved in handling the item. 320 | It also means that recipients of the item may redistribute it 321 | under the same conditions they received it. 322 | 323 | 1. You may make and give away verbatim copies of the source form of the 324 | Standard Version of this Package without restriction, provided that you 325 | duplicate all of the original copyright notices and associated disclaimers. 326 | 327 | 2. You may apply bug fixes, portability fixes and other modifications 328 | derived from the Public Domain or from the Copyright Holder. A Package 329 | modified in such a way shall still be considered the Standard Version. 330 | 331 | 3. You may otherwise modify your copy of this Package in any way, provided 332 | that you insert a prominent notice in each changed file stating how and 333 | when you changed that file, and provided that you do at least ONE of the 334 | following: 335 | 336 | a) place your modifications in the Public Domain or otherwise make them 337 | Freely Available, such as by posting said modifications to Usenet or 338 | an equivalent medium, or placing the modifications on a major archive 339 | site such as uunet.uu.net, or by allowing the Copyright Holder to include 340 | your modifications in the Standard Version of the Package. 341 | 342 | b) use the modified Package only within your corporation or organization. 343 | 344 | c) rename any non-standard executables so the names do not conflict 345 | with standard executables, which must also be provided, and provide 346 | a separate manual page for each non-standard executable that clearly 347 | documents how it differs from the Standard Version. 348 | 349 | d) make other distribution arrangements with the Copyright Holder. 350 | 351 | 4. You may distribute the programs of this Package in object code or 352 | executable form, provided that you do at least ONE of the following: 353 | 354 | a) distribute a Standard Version of the executables and library files, 355 | together with instructions (in the manual page or equivalent) on where 356 | to get the Standard Version. 357 | 358 | b) accompany the distribution with the machine-readable source of 359 | the Package with your modifications. 360 | 361 | c) give non-standard executables non-standard names, and clearly 362 | document the differences in manual pages (or equivalent), together 363 | with instructions on where to get the Standard Version. 364 | 365 | d) make other distribution arrangements with the Copyright Holder. 366 | 367 | 5. You may charge a reasonable copying fee for any distribution of this 368 | Package. You may charge any fee you choose for support of this 369 | Package. You may not charge a fee for this Package itself. However, 370 | you may distribute this Package in aggregate with other (possibly 371 | commercial) programs as part of a larger (possibly commercial) software 372 | distribution provided that you do not advertise this Package as a 373 | product of your own. You may embed this Package's interpreter within 374 | an executable of yours (by linking); this shall be construed as a mere 375 | form of aggregation, provided that the complete Standard Version of the 376 | interpreter is so embedded. 377 | 378 | 6. The scripts and library files supplied as input to or produced as 379 | output from the programs of this Package do not automatically fall 380 | under the copyright of this Package, but belong to whoever generated 381 | them, and may be sold commercially, and may be aggregated with this 382 | Package. If such scripts or library files are aggregated with this 383 | Package via the so-called "undump" or "unexec" methods of producing a 384 | binary executable image, then distribution of such an image shall 385 | neither be construed as a distribution of this Package nor shall it 386 | fall under the restrictions of Paragraphs 3 and 4, provided that you do 387 | not represent such an executable image as a Standard Version of this 388 | Package. 389 | 390 | 7. C subroutines (or comparably compiled subroutines in other 391 | languages) supplied by you and linked into this Package in order to 392 | emulate subroutines and variables of the language defined by this 393 | Package shall not be considered part of this Package, but are the 394 | equivalent of input as in Paragraph 6, provided these subroutines do 395 | not change the language in any way that would cause it to fail the 396 | regression tests for the language. 397 | 398 | 8. Aggregation of this Package with a commercial distribution is always 399 | permitted provided that the use of this Package is embedded; that is, 400 | when no overt attempt is made to make this Package's interfaces visible 401 | to the end user of the commercial distribution. Such use shall not be 402 | construed as a distribution of this Package. 403 | 404 | 9. The name of the Copyright Holder may not be used to endorse or promote 405 | products derived from this software without specific prior written permission. 406 | 407 | 10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR 408 | IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 409 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 410 | 411 | The End 412 | 413 | --------------------------------------------------------------------------------