These are all examples, demos and oddly named READMEs.
cpan/AutoLoader/t/02AutoSplit.t See if AutoSplit works
cpan/B-Debug/Debug.pm Compiler Debug backend
cpan/B-Debug/t/debug.t See if B::Debug works
-cpan/CGI/examples/caution.xbm CGI example
-cpan/CGI/examples/clickable_image.cgi CGI example
-cpan/CGI/examples/cookie.cgi CGI example
-cpan/CGI/examples/crash.cgi CGI example
-cpan/CGI/examples/customize.cgi CGI example
-cpan/CGI/examples/diff_upload.cgi CGI example
-cpan/CGI/examples/dna.small.gif Small image for CGI examples
-cpan/CGI/examples/file_upload.cgi CGI example
-cpan/CGI/examples/frameset.cgi CGI example
-cpan/CGI/examples/index.html Index page for CGI examples
-cpan/CGI/examples/internal_links.cgi CGI example
-cpan/CGI/examples/javascript.cgi CGI example
-cpan/CGI/examples/make_links.pl CGI example
-cpan/CGI/examples/monty.cgi CGI example
-cpan/CGI/examples/multiple_forms.cgi CGI example
-cpan/CGI/examples/nph-clock.cgi CGI example
-cpan/CGI/examples/nph-multipart.cgi CGI example
-cpan/CGI/examples/popup.cgi CGI example
-cpan/CGI/examples/save_state.cgi CGI example
-cpan/CGI/examples/tryit.cgi CGI example
-cpan/CGI/examples/wilogo.gif CGI example
cpan/CGI/lib/CGI/Apache.pm Support for Apache's Perl module
cpan/CGI/lib/CGI/Carp.pm Log server errors with helpful context
cpan/CGI/lib/CGI/Cookie.pm Interface to Netscape Cookies
cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm
cpan/Compress-Raw-Bzip2/typemap
cpan/Compress-Raw-Zlib/config.in Compress::Raw::Zlib
-cpan/Compress-Raw-Zlib/examples/filtdef Compress::Raw::Zlib
-cpan/Compress-Raw-Zlib/examples/filtinf Compress::Raw::Zlib
cpan/Compress-Raw-Zlib/fallback/constants.h Compress::Raw::Zlib
cpan/Compress-Raw-Zlib/fallback/constants.xs Compress::Raw::Zlib
cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm Compress::Raw::Zlib
cpan/Devel-PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer
cpan/Devel-PPPort/PPPort.xs Devel::PPPort dummy PPPort.xs
cpan/Devel-PPPort/PPPort_xs.PL Devel::PPPort RealPPPort.xs writer
-cpan/Devel-PPPort/README.md Devel::PPPort GitHub Readme
cpan/Devel-PPPort/soak Devel::PPPort Test Harness to run under various Perls
cpan/Devel-PPPort/t/call.t Devel::PPPort test file
cpan/Devel-PPPort/t/cop.t Devel::PPPort test file
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm MakeMaker methods for Win95
cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm MakeMaker user override class
cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm Fixes up @INC to use just-built extension
-cpan/ExtUtils-MakeMaker/PATCHING Suggestions for patching MakeMaker
-cpan/ExtUtils-MakeMaker/README.packaging MakeMaker packaging README
cpan/ExtUtils-MakeMaker/t/00compile.t See if MakeMaker modules compile
cpan/ExtUtils-MakeMaker/t/01perl_bugs.t
cpan/ExtUtils-MakeMaker/t/arch_check.t Test MakeMaker's arch_check()
cpan/HTTP-Tiny/t/SimpleCookieJar.pm
cpan/HTTP-Tiny/t/Util.pm
cpan/IO-Compress/bin/zipdetails IO::Compress
-cpan/IO-Compress/examples/compress-zlib/filtdef IO::Compress
-cpan/IO-Compress/examples/compress-zlib/filtinf IO::Compress
-cpan/IO-Compress/examples/compress-zlib/gzcat IO::Compress
-cpan/IO-Compress/examples/compress-zlib/gzgrep IO::Compress
-cpan/IO-Compress/examples/compress-zlib/gzstream IO::Compress
-cpan/IO-Compress/examples/io/anycat IO::Compress
-cpan/IO-Compress/examples/io/bzip2/bzcat IO::Compress
-cpan/IO-Compress/examples/io/bzip2/bzgrep IO::Compress
-cpan/IO-Compress/examples/io/bzip2/bzstream IO::Compress
-cpan/IO-Compress/examples/io/gzip/gzappend IO::Compress
-cpan/IO-Compress/examples/io/gzip/gzcat IO::Compress
-cpan/IO-Compress/examples/io/gzip/gzgrep IO::Compress
-cpan/IO-Compress/examples/io/gzip/gzstream IO::Compress
cpan/IO-Compress/lib/Compress/Zlib.pm IO::Compress
cpan/IO-Compress/lib/File/GlobMapper.pm IO::Compress
cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm IO::Compress
cpan/IO-Compress/t/004gziphdr.t IO::Compress
cpan/IO-Compress/t/005defhdr.t IO::Compress
cpan/IO-Compress/t/006zip.t IO::Compress
-cpan/IO-Compress/t/010examples-bzip2.t IO::Compress
-cpan/IO-Compress/t/010examples-zlib.t IO::Compress
cpan/IO-Compress/t/01misc.t IO::Compress
cpan/IO-Compress/t/020isize.t IO::Compress
cpan/IO-Compress/t/050interop-gzip.t IO::Compress
cpan/IO-Compress/t/compress/zlib-generic.pl Compress::Zlib
cpan/IO-Compress/t/cz-01version.t IO::Compress
cpan/IO-Compress/t/cz-03zlib-v1.t IO::Compress
-cpan/IO-Compress/t/cz-05examples.t IO::Compress
cpan/IO-Compress/t/cz-06gzsetp.t IO::Compress
cpan/IO-Compress/t/cz-08encoding.t IO::Compress
cpan/IO-Compress/t/cz-14gzopen.t IO::Compress
cpan/JSON-PP/t/116_incr_parse_fixed.t
cpan/JSON-PP/t/_unicode_handling.pm
cpan/libnet/Config.eg libnet
-cpan/libnet/demos/ftp libnet
-cpan/libnet/demos/inetd libnet
-cpan/libnet/demos/nntp libnet
-cpan/libnet/demos/nntp.mirror libnet
-cpan/libnet/demos/pop3 libnet
-cpan/libnet/demos/smtp.self libnet
-cpan/libnet/demos/time libnet
cpan/libnet/Hostname.pm.eg libnet
cpan/libnet/Makefile.PL
cpan/libnet/Net/Cmd.pm libnet
cpan/Locale-Codes/lib/Locale/Language.pod Locale::Codes documentation
cpan/Locale-Codes/lib/Locale/Script.pm Locale::Codes
cpan/Locale-Codes/lib/Locale/Script.pod Locale::Codes documentation
-cpan/Locale-Codes/README.first Locale::Codes
cpan/Locale-Codes/t/alias_code_old.t Locale::Codes tests
cpan/Locale-Codes/t/alias_code.t Locale::Codes tests
cpan/Locale-Codes/t/code2country_old.t Locale::Codes tests
cpan/Sys-Syslog/fallback/const-xs.inc Sys::Syslog constants fallback file
cpan/Sys-Syslog/fallback/syslog.h Sys::Syslog header fallback file
cpan/Sys-Syslog/Makefile.PL Sys::Syslog extension makefile writer
-cpan/Sys-Syslog/README.win32 README for Sys::Syslog on Windows
cpan/Sys-Syslog/Syslog.pm Sys::Syslog extension Perl module
cpan/Sys-Syslog/Syslog.xs Sys::Syslog extension external subroutines
cpan/Sys-Syslog/t/00-load.t test for Sys::Syslog
cpan/Test-Harness/t/yamlish.t Test::Harness test
cpan/Test-Harness/t/yamlish-writer.t Test::Harness test
cpan/Test/lib/Test.pm A simple framework for writing test scripts
-cpan/Test-Simple/examples/indent.pl Test::Simple examples
-cpan/Test-Simple/examples/subtest.t Test::Simple examples
cpan/Test-Simple/lib/Test/Builder/Module.pm Base class for test modules
cpan/Test-Simple/lib/Test/Builder.pm For writing new test libraries
cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm Turn on color in Test::Builder::Tester
'DISTRIBUTION' => 'MARKSTOS/CGI.pm-3.63.tar.gz',
'FILES' => q[cpan/CGI],
'EXCLUDED' => [
+ qr{^examples/},
qw( cgi_docs.html
- examples/WORLD_WRITABLE/18.157.1.253.sav
t/gen-tests/gen-start-end-tags.pl
t/fast.t
),
'FILES' => q[cpan/Compress-Raw-Zlib],
'EXCLUDED' => [
+ qr{^examples/},
qr{^t/Test/},
qw( t/000prereq.t
t/99pod.t
# RJBS has asked MHX to have UPSTREAM be 'blead'
# (i.e. move this from cpan/ to dist/)
'FILES' => q[cpan/Devel-PPPort],
- 'EXCLUDED' => ['PPPort.pm'], # we use PPPort_pm.PL instead
+ 'EXCLUDED' => [
+ 'PPPort.pm', # we use PPPort_pm.PL instead
+ 'README.md',
+ ]
},
'Devel::SelfStubber' => {
qr{^t/Liblist_Kid.t},
qr{^t/liblist/},
qr{^\.perlcriticrc},
+ 'PATCHING',
+ 'README.packaging',
],
},
'IO-Compress' => {
'DISTRIBUTION' => 'PMQS/IO-Compress-2.062.tar.gz',
'FILES' => q[cpan/IO-Compress],
- 'EXCLUDED' => [qr{t/Test/}],
+ 'EXCLUDED' => [
+ qr{^examples/},
+ qr{^t/Test/},
+ 't/010examples-bzip2.t',
+ 't/010examples-zlib.t',
+ 't/cz-05examples.t',
+ ],
},
'IO::Zlib' => {
qw( Configure
install-nomake
),
+ qr(^demos/),
],
# Customized for perl since we cannot use either an auto-generated
# script or the version in the CPAN distro.
'DISTRIBUTION' => 'SBECK/Locale-Codes-3.27.tar.gz',
'FILES' => q[cpan/Locale-Codes],
'EXCLUDED' => [
- qw( t/pod_coverage.t
+ qw( README.first
+ t/pod_coverage.t
t/pod.t),
qr{^t/runtests},
qr{^t/runtests\.bat},
'FILES' => q[cpan/Sys-Syslog],
'EXCLUDED' => [
qr{^eg/},
- qw( t/data-validation.t
+ qw( README.win32
+ t/data-validation.t
t/distchk.t
t/pod.t
t/podcover.t
'EXCLUDED' => [
qw( .perlcriticrc
.perltidyrc
+ examples/indent.pl
+ examples/subtest.t
t/00compile.t
t/pod.t
t/pod-coverage.t
+++ /dev/null
-#define caution_width 32
-#define caution_height 32
-static char caution_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x10,0x01,
- 0x00,0x00,0x08,0x07,0x00,0x00,0x08,0x0e,0x00,0x00,0x04,0x0e,0x00,0x00,0x04,
- 0x1c,0x00,0x00,0x02,0x1c,0x00,0x00,0xe2,0x38,0x00,0x00,0xf1,0x39,0x00,0x00,
- 0xf1,0x71,0x00,0x80,0xf0,0x71,0x00,0x80,0xf0,0xe1,0x00,0x40,0xf0,0xe1,0x00,
- 0x40,0xf0,0xc1,0x01,0x20,0xf0,0xc1,0x01,0x20,0xf0,0x81,0x03,0x10,0xe0,0x80,
- 0x03,0x10,0xe0,0x00,0x07,0x08,0xe0,0x00,0x07,0x08,0xe0,0x00,0x0e,0x04,0x00,
- 0x00,0x0e,0x04,0xe0,0x00,0x1c,0x02,0xf0,0x01,0x1c,0x02,0xf0,0x01,0x38,0x01,
- 0xe0,0x00,0x38,0x01,0x00,0x00,0x70,0x01,0x00,0x00,0x70,0xff,0xff,0xff,0x7f,
- 0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0x00};
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-$query = new CGI;
-print $query->header;
-print $query->start_html("A Clickable Image");
-print <<END;
-<H1>A Clickable Image</H1>
-</A>
-END
-print "Sorry, this isn't very exciting!\n";
-
-print $query->start_form;
-print $query->image_button('picture',"./wilogo.gif");
-print "Give me a: ",$query->popup_menu('letter',['A','B','C','D','E','W']),"\n"; #
-print "<P>Magnification: ",$query->radio_group('magnification',['1X','2X','4X','20X']),"\n";
-print "<HR>\n";
-
-if ($query->param) {
- print "<P>Magnification, <EM>",$query->param('magnification'),"</EM>\n";
- print "<P>Selected Letter, <EM>",$query->param('letter'),"</EM>\n";
- ($x,$y) = ($query->param('picture.x'),$query->param('picture.y'));
- print "<P>Selected Position <EM>($x,$y)</EM>\n";
-}
-
-print $query->end_html;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI qw(:standard);
-
-@ANIMALS=sort qw/lion tiger bear pig porcupine ferret zebra gnu ostrich
- emu moa goat weasel yak chicken sheep hyena dodo lounge-lizard
- squirrel rat mouse hedgehog racoon baboon kangaroo hippopotamus
- giraffe/;
-
-# Recover the previous animals from the magic cookie.
-# The cookie has been formatted as an associative array
-# mapping animal name to the number of animals.
-%zoo = cookie('animals');
-
-# Recover the new animal(s) from the parameter 'new_animal'
-@new = param('new_animals');
-
-# If the action is 'add', then add new animals to the zoo. Otherwise
-# delete them.
-foreach (@new) {
- if (param('action') eq 'Add') {
- $zoo{$_}++;
- } elsif (param('action') eq 'Delete') {
- $zoo{$_}-- if $zoo{$_};
- delete $zoo{$_} unless $zoo{$_};
- }
-}
-
-# Add new animals to old, and put them in a cookie
-$the_cookie = cookie(-name=>'animals',
- -value=>\%zoo,
- -expires=>'+1h');
-
-# Print the header, incorporating the cookie and the expiration date...
-print header(-cookie=>$the_cookie);
-
-# Now we're ready to create our HTML page.
-print start_html('Animal crackers');
-
-print <<EOF;
-<h1>Animal Crackers</h1>
-Choose the animals you want to add to the zoo, and click "add".
-Come back to this page any time within the next hour and the list of
-animals in the zoo will be resurrected. You can even quit Netscape
-completely!
-<p>
-Try adding the same animal several times to the list. Does this
-remind you vaguely of a shopping cart?
-<p>
-<em>This script only works with Netscape browsers</em>
-<p>
-<center>
-<table border>
-<tr><th>Add/Delete<th>Current Contents
-EOF
- ;
-
-print "<tr><td>",start_form;
-print scrolling_list(-name=>'new_animals',
- -values=>[@ANIMALS],
- -multiple=>1,
- -override=>1,
- -size=>10),"<br>";
-print submit(-name=>'action',-value=>'Delete'),
- submit(-name=>'action',-value=>'Add');
-print end_form;
-
-print "<td>";
-if (%zoo) { # make a table
- print "<ul>\n";
- foreach (sort keys %zoo) {
- print "<li>$zoo{$_} $_\n";
- }
- print "</ul>\n";
-} else {
- print "<strong>The zoo is empty.</strong>\n";
-}
-print "</table></center>";
-
-print <<EOF;
-<hr>
-<ADDRESS>Lincoln D. Stein</ADDRESS><BR>
-<A HREF="./">More Examples</A>
-EOF
- ;
-print end_html;
-
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI::Carp qw(fatalsToBrowser);
-
-# This line invokes a fatal error message at compile time.
-foo bar baz;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI qw(:standard :html3);
-
-# Some constants to use in our form.
-@colors=qw/aqua black blue fuschia gray green lime maroon navy olive
- purple red silver teal white yellow/;
-@sizes=("<default>",1..7);
-
-# recover the "preferences" cookie.
-%preferences = cookie('preferences');
-
-# If the user wants to change the background color or her
-# name, they will appear among our CGI parameters.
-foreach ('text','background','name','size') {
- $preferences{$_} = param($_) || $preferences{$_};
-}
-
-# Set some defaults
-$preferences{'background'} = $preferences{'background'} || 'silver';
-$preferences{'text'} = $preferences{'text'} || 'black';
-
-# Refresh the cookie so that it doesn't expire. This also
-# makes any changes the user made permanent.
-$the_cookie = cookie(-name=>'preferences',
- -value=>\%preferences,
- -expires=>'+30d');
-print header(-cookie=>$the_cookie);
-
-# Adjust the title to incorporate the user's name, if provided.
-$title = $preferences{'name'} ?
- "Welcome back, $preferences{name}!" : "Customizable Page";
-
-# Create the HTML page. We use several of Netscape's
-# extended tags to control the background color and the
-# font size. It's safe to use Netscape features here because
-# cookies don't work anywhere else anyway.
-print start_html(-title=>$title,
- -bgcolor=>$preferences{'background'},
- -text=>$preferences{'text'}
- );
-
-print basefont({SIZE=>$preferences{size}}) if $preferences{'size'} > 0;
-
-print h1($title),<<END;
-You can change the appearance of this page by submitting
-the fill-out form below. If you return to this page any time
-within 30 days, your preferences will be restored.
-END
- ;
-
-# Create the form
-print hr(),
- start_form,
-
- "Your first name: ",
- textfield(-name=>'name',
- -default=>$preferences{'name'},
- -size=>30),br,
-
- table(
- TR(
- td("Preferred"),
- td("Page color:"),
- td(popup_menu(-name=>'background',
- -values=>\@colors,
- -default=>$preferences{'background'})
- ),
- ),
- TR(
- td(''),
- td("Text color:"),
- td(popup_menu(-name=>'text',
- -values=>\@colors,
- -default=>$preferences{'text'})
- )
- ),
- TR(
- td(''),
- td("Font size:"),
- td(popup_menu(-name=>'size',
- -values=>\@sizes,
- -default=>$preferences{'size'})
- )
- )
- ),
-
- submit(-label=>'Set preferences'),
- hr;
-
-print a({HREF=>"/"},'Go to the home page');
-print end_html;
+++ /dev/null
-#!/usr/local/bin/perl
-
-$DIFF = "/usr/bin/diff";
-$PERL = "/usr/bin/perl";
-
-use CGI qw(:standard);
-use CGI::Carp;
-
-print header;
-print start_html("File Diff Example");
-print "<strong>Version </strong>$CGI::VERSION<p>";
-
-print <<EOF;
-<H1>File Diff Example</H1>
-Enter two files. When you press "submit" their diff will be
-produced.
-EOF
- ;
-
-# Start a multipart form.
-print start_multipart_form;
-print "File #1:",filefield(-name=>'file1',-size=>45),"<BR>\n";
-print "File #2:",filefield(-name=>'file2',-size=>45),"<BR>\n";
-print "Diff type: ",radio_group(-name=>'type',
- -value=>['context','normal']),"<br>\n";
-print reset,submit(-name=>'submit',-value=>'Do Diff');
-print endform;
-
-# Process the form if there is a file name entered
-$file1 = param('file1');
-$file2 = param('file2');
-
-$|=1; # for buffering
-if ($file1 && $file2) {
- $realfile1 = tmpFileName($file1);
- $realfile2 = tmpFileName($file2);
- print "<HR>\n";
- print "<H2>$file1 vs $file2</H2>\n";
-
- print "<PRE>\n";
- $options = "-c" if param('type') eq 'context';
- system "$DIFF $options $realfile1 $realfile2 | $PERL -pe 's/>/>/g; s/</</g;'";
- close $file1;
- close $file2;
- print "</PRE>\n";
-}
-
-print <<EOF;
-<HR>
-<A HREF="../cgi_docs.html">CGI documentation</A>
-<HR>
-<ADDRESS>
-<A HREF="/~lstein">Lincoln D. Stein</A>
-</ADDRESS><BR>
-Last modified 17 July 1996
-EOF
- ;
-print end_html;
-
-sub sanitize {
- my $name = shift;
- my($safe) = $name=~/([a-zA-Z0-9._~#,]+)/;
- unless ($safe) {
- print "<strong>$name is not a valid Unix filename -- sorry</strong>";
- exit 0;
- }
- return $safe;
-}
+++ /dev/null
-#!/usr/local/bin/perl -w
-
-use strict 'refs';
-use lib '..';
-use CGI qw(:standard);
-use CGI::Carp qw/fatalsToBrowser/;
-
-print header();
-print start_html("File Upload Example");
-print strong("Version "),$CGI::VERSION,p;
-
-print h1("File Upload Example"),
- 'This example demonstrates how to prompt the remote user to
- select a remote file for uploading. ',
- strong("This feature only works with Netscape 2.0 or greater, or IE 4.0 or greater."),
- p,
- 'Select the ',cite('browser'),' button to choose a text file
- to upload. When you press the submit button, this script
- will count the number of lines, words, and characters in
- the file.';
-
-my @types = ('count lines','count words','count characters');
-
-# Start a multipart form.
-print start_multipart_form(),
- "Enter the file to process:",
- filefield('filename','',45),
- br,
- checkbox_group('count',\@types,\@types),
- p,
- reset,submit('submit','Process File'),
- endform;
-
-# Process the form if there is a file name entered
-if (my $file = param('filename')) {
- my %stats;
- my $tmpfile=tmpFileName($file);
- my $mimetype = uploadInfo($file)->{'Content-Type'} || '';
- print hr(),
- h2($file),
- h3($tmpfile),
- h4("MIME Type:",em($mimetype));
-
- my($lines,$words,$characters,@words) = (0,0,0,0);
- while (<$file>) {
- $lines++;
- $words += @words=split(/\s+/);
- $characters += length($_);
- }
- close $file;
- grep($stats{$_}++,param('count'));
- if (%stats) {
- print strong("Lines: "),$lines,br if $stats{'count lines'};
- print strong("Words: "),$words,br if $stats{'count words'};
- print strong("Characters: "),$characters,br if $stats{'count characters'};
- } else {
- print strong("No statistics selected.");
- }
-}
-
-# print cite("URL parameters: "),url_param();
-
-print hr(),
- a({href=>"../cgi_docs.html"},"CGI documentation"),
- hr,
- address(
- a({href=>'/~lstein'},"Lincoln D. Stein")),
- br,
- 'Last modified July 17, 1996',
- end_html;
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-$query = new CGI;
-print $query->header;
-$TITLE="Frameset Example";
-
-# We use the path information to distinguish between calls
-# to the script to:
-# (1) create the frameset
-# (2) create the query form
-# (3) create the query response
-
-$path_info = $query->path_info;
-
-# If no path information is provided, then we create
-# a side-by-side frame set
-if (!$path_info) {
- &print_frameset;
- exit 0;
-}
-
-# If we get here, then we either create the query form
-# or we create the response.
-&print_html_header;
-&print_query if $path_info=~/query/;
-&print_response if $path_info=~/response/;
-&print_end;
-
-
-# Create the frameset
-sub print_frameset {
- $script_name = $query->script_name;
- print <<EOF;
-<html><head><title>$TITLE</title></head>
-<frameset cols="50,50">
-<frame src="$script_name/query" name="query">
-<frame src="$script_name/response" name="response">
-</frameset>
-EOF
- ;
- exit 0;
-}
-
-sub print_html_header {
- print $query->start_html($TITLE);
-}
-
-sub print_end {
- print qq{<P><hr><A HREF="../index.html" TARGET="_top">More Examples</A>};
- print $query->end_html;
-}
-
-sub print_query {
- $script_name = $query->script_name;
- print "<H1>Frameset Query</H1>\n";
- print $query->start_form(-action=>"$script_name/response",-TARGET=>"response");
- print "What's your name? ",$query->textfield('name');
- print "<P>What's the combination?<P>",
- $query->checkbox_group(-name=>'words',
- -values=>['eenie','meenie','minie','moe']);
-
- print "<P>What's your favorite color? ",
- $query->popup_menu(-name=>'color',
- -values=>['red','green','blue','chartreuse']),
- "<P>";
- print $query->submit;
- print $query->endform;
-}
-
-sub print_response {
- print "<H1>Frameset Result</H1>\n";
- unless ($query->param) {
- print "<b>No query submitted yet.</b>";
- return;
- }
- print "Your name is <EM>",$query->param(name),"</EM>\n";
- print "<P>The keywords are: <EM>",join(", ",$query->param(words)),"</EM>\n";
- print "<P>Your favorite color is <EM>",$query->param(color),"</EM>\n";
-}
-
+++ /dev/null
-<HTML> <HEAD>
-<TITLE>More Examples of Scripts Created with CGI.pm</TITLE>
-</HEAD>
-
-<BODY>
-<H1>More Examples of Scripts Created with CGI.pm</H1>
-
-<H2> Basic Non Sequitur Questionnaire</H2>
-<UL>
- <LI> <A HREF="tryit.cgi">Try the script</A>
- <LI> <A HREF="tryit.txt">Look at its source code</A>
-</UL>
-
-<H2> Advanced Non Sequitur Questionnaire</H2>
-<UL>
- <LI> <A HREF="monty.cgi">Try the script</A>
- <LI> <A HREF="monty.txt">Look at its source code</A>
-</UL>
-
-<H2> Save and restore the state of a form to a file</H2>
-<UL>
- <LI> <A HREF="save_state.cgi">Try the script</A>
- <LI> <A HREF="save_state.txt">Look at its source code</A>
-</UL>
-
-<H2> Server Push</H2>
-<ul>
- <li><a href="nph-multipart.cgi">Try the script</a>
- <li><a href="nph-multipart.txt">Look at its source code</a>
-</ul>
-
-<H2> Read the coordinates from a clickable image map</H2>
-<UL>
- <LI> <A HREF="clickable_image.cgi">Try the script</A>
- <LI> <A HREF="clickable_image.txt">Look at its source code</A>
-</UL>
-
-<H2> Multiple independent forms on the same page</H2>
-<UL>
- <LI> <A HREF="multiple_forms.cgi">Try the script</A>
- <LI> <A HREF="multiple_forms.txt">Look at its source code</A>
-</UL>
-
-<H2> How to maintain state on a page with internal links</H2>
-<UL>
- <LI> <A HREF="internal_links.cgi">Try the script</A>
- <LI> <A HREF="internal_links.txt">Look at its source code</A>
-</UL>
-
-<h2>Echo fatal script errors to the browser</h2>
-<em>This script deliberately generates a compile-time error.</em>
-<ul>
- <li><a href="crash.cgi">Try the script</a>
- <li><a href="crash.txt">Look at its source code</a>
-</ul>
-
-<EM>The Following Scripts Work with Netscape Navigator 2.0 and higher,
-or Internet Explorer 3.0 and higher</EM>
-
-<H2> Prompt for a file to upload and process it</H2>
-<UL>
- <LI> <A HREF="file_upload.cgi">Try the script</A>
- <LI> <A HREF="file_upload.txt">Look at its source code</A>
-</UL>
-
-<h2> A Continuously-Updated Page using Server Push</h2>
-<ul>
- <li><a href="nph-clock.cgi">Try the script</a>
- <li><a href="nph-clock.txt">Look at its source code</a>
-</ul>
-
-<h2>Compute the "diff" between two uploaded files</h2>
-<ul>
- <li><a href="diff_upload.cgi">Try the script</a>
- <li><a href="diff_upload.txt">Look at its source code</a>
-</ul>
-
-<h2>Maintain state over a long period with a cookie</h2>
-<ul>
- <li><a href="cookie.cgi">Try the script</a>
- <li><a href="cookie.txt">Look at its source code</a>
-</ul>
-
-<h2>Permanently customize the appearance of a page with a cookie</h2>
-<ul>
- <li><a href="customize.cgi">Try the script</a>
- <li><a href="customize.txt">Look at its source code</a>
-</ul>
-
-<h2> Popup the response in a new window</h2>
-<ul>
- <li><a href="popup.cgi">Try the script</a>
- <li><a href="popup.txt">Look at its source code</a>
-</ul>
-
-<h2> Side-by-side form and response using frames</h2>
-<ul>
- <li><a href="frameset.cgi">Try the script</a>
- <li><a href="frameset.txt">Look at its source code</a>
-</ul>
-
-<h2>Verify the Contents of a fill-out form with JavaScript</h2>
-<ul>
- <li><a href="javascript.cgi">Try the script</a>
- <li><a href="javascript.txt">Look at its source code</a>
-</ul>
-
-<HR>
-<MENU>
- <LI> <A HREF="../cgi_docs.html">CGI.pm documentation</A>
- <LI> <A HREF="../CGI.pm.tar.gz">Download the CGI.pm distribution</A>
-</MENU>
-<HR>
-<ADDRESS>Lincoln D. Stein, lstein@genome.wi.mit.edu<br>
-<a href="/">Whitehead Institute/MIT Center for Genome Research</a></ADDRESS>
-<!-- hhmts start -->
-Last modified: Wed Jun 23 15:31:47 EDT 1999
-<!-- hhmts end -->
-</BODY> </HTML>
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-$query = new CGI;
-
-# We generate a regular HTML file containing a very long list
-# and a popup menu that does nothing except to show that we
-# don't lose the state information.
-print $query->header;
-print $query->start_html("Internal Links Example");
-print "<H1>Internal Links Example</H1>\n";
-print "Click <cite>Submit Query</cite> to create a state. Then scroll down and",
- " click on any of the <cite>Jump to top</cite> links. This is not very exciting.";
-
-print "<A NAME=\"start\"></A>\n"; # an anchor point at the top
-
-# pick a default starting value;
-$query->param('amenu','FOO1') unless $query->param('amenu');
-
-print $query->start_form;
-print $query->popup_menu('amenu',[('FOO1'..'FOO9')]);
-print $query->submit,$query->endform;
-
-# We create a long boring list for the purposes of illustration.
-$myself = $query->self_url;
-print "<OL>\n";
-for (1..100) {
- print qq{<LI>List item #$_ <A HREF="$myself#start">Jump to top</A>\n};
-}
-print "</OL>\n";
-
-print $query->end_html;
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-# This script illustrates how to use JavaScript to validate fill-out
-# forms.
-use CGI qw(:standard);
-
-# Here's the javascript code that we include in the document.
-$JSCRIPT=<<EOF;
- // validate that the user is the right age. Return
- // false to prevent the form from being submitted.
- function validateForm() {
- var today = new Date();
- var birthday = validateDate(document.form1.birthdate);
- if (birthday == 0) {
- document.form1.birthdate.focus()
- document.form1.birthdate.select();
- return false;
- }
- var milliseconds = today.getTime()-birthday;
- var years = milliseconds/(1000 * 60 * 60 * 24 * 365.25);
- if ((years > 20) || (years < 5)) {
- alert("You must be between the ages of 5 and 20 to submit this form");
- document.form1.birthdate.focus();
- document.form1.birthdate.select();
- return false;
- }
- // Since we've calculated the age in years already,
- // we might as well send it up to our CGI script.
- document.form1.age.value=Math.floor(years);
- return true;
- }
-
- // make sure that the contents of the supplied
- // field contain a valid date.
- function validateDate(element) {
- var date = Date.parse(element.value);
- if (0 == date) {
- alert("Please enter date in format MMM DD, YY");
- element.focus();
- element.select();
- }
- return date;
- }
-
- // Compliments, compliments
- function doPraise(element) {
- if (element.checked) {
- self.status=element.value + " is an excellent choice!";
- return true;
- } else {
- return false;
- }
- }
-
- function checkColor(element) {
- var color = element.options[element.selectedIndex].text;
- if (color == "blonde") {
- if (confirm("Is it true that blondes have more fun?"))
- alert("Darn. That leaves me out.");
- } else
- alert(color + " is a fine choice!");
- }
-EOF
- ;
-
-# here's where the execution begins
-print header;
-print start_html(-title=>'Personal Profile',-script=>$JSCRIPT);
-
-print h1("Big Brother Wants to Know All About You"),
- strong("Note: "),"This page uses JavaScript and requires ",
- "Netscape 2.0 or higher to do anything special.";
-
-&print_prompt();
-print hr;
-&print_response() if param;
-print end_html;
-
-sub print_prompt {
- print start_form(-name=>'form1',
- -onSubmit=>"return validateForm()"),"\n";
- print "Birthdate (e.g. Jan 3, 1972): ",
- textfield(-name=>'birthdate',
- -onBlur=>"validateDate(this)"),"<p>\n";
- print "Sex: ",radio_group(-name=>'gender',
- -value=>[qw/male female/],
- -onClick=>"doPraise(this)"),"<p>\n";
- print "Hair color: ",popup_menu(-name=>'color',
- -value=>[qw/brunette blonde red gray/],
- -default=>'red',
- -onChange=>"checkColor(this)"),"<p>\n";
- print hidden(-name=>'age',-value=>0);
- print submit();
- print end_form;
-}
-
-sub print_response {
- import_names('Q');
- print h2("Your profile"),
- "You claim to be a ",b($Q::age)," year old ",b($Q::color,$Q::gender),".",
- "You should be ashamed of yourself for lying so ",
- "blatantly to big brother!",
- hr;
-}
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-# this is just a utility for creating symlinks from *.txt to *.cgi
-# for documentation purposes.
-foreach (<*.cgi>) {
- ($target=$_)=~s/cgi$/txt/;
- symlink $_,$target
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-use CGI::Carp qw/fatalsToBrowser/;
-
-$query = new CGI;
-
-print $query->header;
-print $query->start_html("Example CGI.pm Form");
-print "<H1> Example CGI.pm Form</H1>\n";
-&print_prompt($query);
-&do_work($query);
-&print_tail;
-print $query->end_html;
-
-sub print_prompt {
- my($query) = @_;
-
- print $query->start_form;
- print "<EM>What's your name?</EM><BR>";
- print $query->textfield('name');
- print $query->checkbox('Not my real name');
-
- print "<P><EM>Where can you find English Sparrows?</EM><BR>";
- print $query->checkbox_group(
- -name=>'Sparrow locations',
- -Values=>[England,France,Spain,Asia,Hoboken],
- -linebreak=>'yes',
- -defaults=>[England,Asia]);
-
- print "<P><EM>How far can they fly?</EM><BR>",
- $query->radio_group(
- -name=>'how far',
- -Values=>['10 ft','1 mile','10 miles','real far'],
- -default=>'1 mile');
-
- print "<P><EM>What's your favorite color?</EM> ";
- print $query->popup_menu(-name=>'Color',
- -Values=>['black','brown','red','yellow'],
- -default=>'red');
-
- print $query->hidden('Reference','Monty Python and the Holy Grail');
-
- print "<P><EM>What have you got there?</EM><BR>";
- print $query->scrolling_list(
- -name=>'possessions',
- -Values=>['A Coconut','A Grail','An Icon',
- 'A Sword','A Ticket'],
- -size=>5,
- -multiple=>'true');
-
- print "<P><EM>Any parting comments?</EM><BR>";
- print $query->textarea(-name=>'Comments',
- -rows=>10,
- -columns=>50);
-
- print "<P>",$query->reset;
- print $query->submit('Action','Shout');
- print $query->submit('Action','Scream');
- print $query->endform;
- print "<HR>\n";
- }
-
-sub do_work {
- my($query) = @_;
- my(@values,$key);
-
- print "<H2>Here are the current settings in this form</H2>";
-
- foreach $key ($query->param) {
- print "<STRONG>$key</STRONG> -> ";
- @values = $query->param($key);
- print join(", ",@values),"<BR>\n";
- }
-}
-
-sub print_tail {
- print <<END;
-<HR>
-<ADDRESS>Lincoln D. Stein</ADDRESS><BR>
-<A HREF="/">Home Page</A>
-END
- ;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-
-$query = new CGI;
-print $query->header;
-print $query->start_html('Multiple Forms');
-print "<H1>Multiple Forms</H1>\n";
-
-# Print the first form
-print $query->start_form;
-$name = $query->remote_user || 'anonymous@' . $query->remote_host;
-
-print "What's your name? ",$query->textfield('name',$name,50);
-print "<P>What's the combination?<P>",
- $query->checkbox_group('words',['eenie','meenie','minie','moe']);
-print "<P>What's your favorite color? ",
- $query->popup_menu('color',['red','green','blue','chartreuse']),
- "<P>";
-print $query->submit('form_1','Send Form 1');
-print $query->endform;
-
-# Print the second form
-print "<HR>\n";
-print $query->start_form;
-print "Some radio buttons: ",$query->radio_group('radio buttons',
- [qw{one two three four five}],'three'),"\n";
-print "<P>What's the password? ",$query->password_field('pass','secret');
-print $query->defaults,$query->submit('form_2','Send Form 2'),"\n";
-print $query->endform;
-
-print "<HR>\n";
-
-$query->import_names('Q');
-if ($Q::form_1) {
- print "<H2>Form 1 Submitted</H2>\n";
- print "Your name is <EM>$Q::name</EM>\n";
- print "<P>The combination is: <EM>{",join(",",@Q::words),"}</EM>\n";
- print "<P>Your favorite color is <EM>$Q::color</EM>\n";
-} elsif ($Q::form_2) {
- print <<EOF;
-<H2>Form 2 Submitted</H2>
-<P>The value of the radio buttons is <EM>$Q::radio_buttons</EM>
-<P>The secret password is <EM>$Q::pass</EM>
-EOF
- ;
-}
-print qq{<P><A HREF="./">Other examples</A>};
-print qq{<P><A HREF="../cgi_docs.html">Go to the documentation</A>};
-
-print $query->end_html;
-
-
-
+++ /dev/null
-#!/usr/local/bin/perl -w
-
-use CGI::Push qw(:standard :html3);
-
-do_push(-next_page=>\&draw_time,-delay=>1);
-
-sub draw_time {
- my $time = localtime();
- return start_html('Tick Tock'),
- div({-align=>CENTER},
- h1('Virtual Clock'),
- h2($time)
- ),
- hr,
- a({-href=>'index.html'},'More examples'),
- end_html();
-}
-
+++ /dev/null
-#!/usr/local/bin/perl
-use CGI qw/:push -nph/;
-$| = 1;
-print multipart_init(-boundary=>'----------------here we go!');
-while (1) {
- print multipart_start(-type=>'text/plain'),
- "The current time is ",scalar(localtime),"\n",
- multipart_end;
- sleep 1;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-$query = new CGI;
-print $query->header;
-print $query->start_html('Popup Window');
-
-
-if (!$query->param) {
- print "<H1>Ask your Question</H1>\n";
- print $query->start_form(-target=>'_new');
- print "What's your name? ",$query->textfield('name');
- print "<P>What's the combination?<P>",
- $query->checkbox_group(-name=>'words',
- -values=>['eenie','meenie','minie','moe'],
- -defaults=>['eenie','moe']);
-
- print "<P>What's your favorite color? ",
- $query->popup_menu(-name=>'color',
- -values=>['red','green','blue','chartreuse']),
- "<P>";
- print $query->submit;
- print $query->endform;
-
-} else {
- print "<H1>And the Answer is...</H1>\n";
- print "Your name is <EM>",$query->param(name),"</EM>\n";
- print "<P>The keywords are: <EM>",join(", ",$query->param(words)),"</EM>\n";
- print "<P>Your favorite color is <EM>",$query->param(color),"</EM>\n";
-}
-print qq{<P><A HREF="cgi_docs.html">Go to the documentation</A>};
-print $query->end_html;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI;
-$query = new CGI;
-
-print $query->header;
-print $query->start_html("Save and Restore Example");
-print "<H1>Save and Restore Example</H1>\n";
-
-# Here's where we take action on the previous request
-&save_parameters($query) if $query->param('action') eq 'SAVE';
-$query = &restore_parameters($query) if $query->param('action') eq 'RESTORE';
-
-# Here's where we create the form
-print $query->start_multipart_form;
-print "Popup 1: ",$query->popup_menu('popup1',[qw{red green purple magenta orange chartreuse brown}]),"\n";
-print "Popup 2: ",$query->popup_menu('popup2',[qw{lion tiger bear zebra potto wildebeest frog emu gazelle}]),"\n";
-print "<P>";
-$default_name = $query->remote_addr . '.sav';
-print "Save/restore state from file: ",$query->textfield('savefile',$default_name),"\n";
-print "<P>";
-print $query->submit('action','SAVE'),$query->submit('action','RESTORE');
-print "<P>",$query->defaults;
-print $query->endform;
-
-# Here we print out a bit at the end
-print $query->end_html;
-
-sub save_parameters {
- local($query) = @_;
- local($filename) = &clean_name($query->param('savefile'));
- if (open(FILE,">$filename")) {
- $query->save(FILE);
- close FILE;
- print "<STRONG>State has been saved to file $filename</STRONG>\n";
- print "<P>If you remember this name you can restore the state later.\n";
- } else {
- print "<STRONG>Error:</STRONG> couldn't write to file $filename: $!\n";
- }
-}
-
-sub restore_parameters {
- local($query) = @_;
- local($filename) = &clean_name($query->param('savefile'));
- if (open(FILE,$filename)) {
- $query = new CGI(FILE); # Throw out the old query, replace it with a new one
- close FILE;
- print "<STRONG>State has been restored from file $filename</STRONG>\n";
- } else {
- print "<STRONG>Error:</STRONG> couldn't restore file $filename: $!\n";
- }
- return $query;
-}
-
-
-# Very important subroutine -- get rid of all the naughty
-# metacharacters from the file name. If there are, we
-# complain bitterly and die.
-sub clean_name {
- local($name) = @_;
- unless ($name=~/^[\w\._\-]+$/) {
- print "<STRONG>$name has naughty characters. Only ";
- print "alphanumerics are allowed. You can't use absolute names.</STRONG>";
- die "Attempt to use naughty characters";
- }
- return "WORLD_WRITABLE/$name";
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use CGI ':standard';
-
-print header;
-print start_html('A Simple Example'),
- h1('A Simple Example'),
- start_form,
- "What's your name? ",textfield('name'),
- p,
- "What's the combination?",
- p,
- checkbox_group(-name=>'words',
- -values=>['eenie','meenie','minie','moe'],
- -defaults=>['eenie','minie']),
- p,
- "What's your favorite color? ",
- popup_menu(-name=>'color',
- -values=>['red','green','blue','chartreuse']),
- p,
- submit,
- end_form,
- hr;
-
-if (param()) {
- print
- "Your name is: ",em(param('name')),
- p,
- "The keywords are: ",em(join(", ",param('words'))),
- p,
- "Your favorite color is: ",em(param('color')),
- hr;
-}
-print a({href=>'../cgi_docs.html'},'Go to the documentation');
-print end_html;
-
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use Compress::Raw::Zlib ;
-
-use strict ;
-use warnings ;
-
-binmode STDIN;
-binmode STDOUT;
-
-my $x = new Compress::Raw::Zlib::Deflate()
- or die "Cannot create a deflation stream\n" ;
-
-my $output = '' ;
-
-while (<>)
-{
- $x->deflate($_, $output) == Z_OK
- or die "deflate failed\n" ;
-
- print $output ;
-}
-
-$x->flush($output) == Z_OK
- or die "flush failed\n" ;
-
-print $output ;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use Compress::Raw::Zlib ;
-
-use strict ;
-use warnings ;
-
-binmode STDIN;
-binmode STDOUT;
-
-my $x = new Compress::Raw::Zlib::Inflate
- or die "Cannot create a inflation stream\n" ;
-
-my $input = '' ;
-my $output = '' ;
-my $status ;
-
-while (read(STDIN, $input, 4096))
-{
- $status = $x->inflate($input, $output) ;
-
- print $output
- if $status == Z_OK or $status == Z_STREAM_END ;
-
- last if $status != Z_OK ;
-}
-
-die "inflation failed\n"
- unless $status == Z_STREAM_END ;
-
+++ /dev/null
-Devel-PPPort
-============
-
-Perl/Pollution/Portability
+++ /dev/null
-"The easy way is always mined.
- The important things are always simple.
- The simple things are always hard."
- -- Some of Murphy's Laws of Combat
-
-This is a short set of guidelines for those patching
-ExtUtils::MakeMaker. Its not an iron-clad set of rules, but just
-things which make life easier when reading and integrating a patch.
-
-Lots of information can be found in makemaker.org.
-
-MakerMaker is being maintained until something else can replace it.
-Bugs will be fixed and compatibility improved, but I would like to
-avoid new features. If you want to add something to MakeMaker,
-consider instead working on Module::Build, MakeMaker's heir apparent.
-
-
-Reporting bugs
-
-- Often the only information we have for fixing a bug is contained in your
- report. So...
-
-- Please report your bugs via http://rt.cpan.org or by mailing to
- makemaker@perl.org. RT is preferred.
-
-- Please report your bug immediately upon encountering it. Do not wait
- until you have a patch to fix the bug. Patches are good, but not at
- the expense of timely bug reports.
-
-- Please be as verbose as possible. Include the complete output of
- your 'make test' or even 'make test TEST_VERBOSE=1' and a copy of the
- generated Makefile. Err on the side of verbosity. The more data we
- have to work with, the faster we can diagnose the problem.
-
-- If you find an undocumented feature, or if a feature has changed/been
- added which causes a problem, report it. Do not assume it was done
- deliberately. Even if it was done deliberately, we still want to hear
- if it caused problems.
-
-- If you're testing MakeMaker against a development version of Perl,
- please also check it against the latest stable version. This makes it
- easier to figure out if its MakeMaker or Perl at fault.
-
-
-Patching details
-
-- Please use unified diffs. (diff -u)
-
-- Patches against the latest development snapshot from makemaker.org are
- preferred. Patches against the latest CPAN version are ok, too.
-
-- Post your patch to makemaker@perl.org.
-
-
-Code formatting
-
-- No literal tabs (except where necessary inside Makefile code, obviously).
-
-- 4 character indentation.
-
-- this_style is prefered instead of studlyCaps.
-
-- Private subroutine names (ie. those used only in the same package
- they're declared in) should start with an underscore (_sekret_method).
-
-- Protected subroutines (ie. ones intended to be used by other modules in
- ExtUtils::*) should be named normally (no leading underscore) but
- documented as protected (see Documentation below).
-
-- Do not use indirect object syntax (ie. new Foo::Bar (@args))
-
-- make variables use dollar signs like Perl scalars. This causes problems
- when you have to mix them both in a string. If you find yourself
- backwacking lots of dollar signs because you have one interpolated
- perl variable, like this:
-
- return <<EOT;
-subdirs ::
- \$(NOECHO)cd $subdir && \$(MAKE) -f \$(FIRST_MAKEFILE) all \$(PASTHRU)
-
-EOT
-
- or are switching quoting contexts:
-
- return q{
-subdirs ::
- $(NOECHO)cd }.$subdir.q{ && $(MAKE) -f $(FIRST_MAKEFILE) all $(PASTHRU)
-
-};
-
- consider using sprintf instead.
-
- return sprintf <<'EOT', $subdir;
-subdirs ::
- $(NOECHO)cd %s && $(MAKE) -f $(FIRST_MAKEFILE) all $(PASTHRU)
-
-EOT
-
-
-Refactoring and Cleanup
-
-- MakeMaker is a mess. We like patches which clean things up.
-
-
-Backwards Compatibility
-
-- MakeMaker must be backwards compatible to 5.5.4 (5.005_04). Avoid any
- obvious 5.6-isms (threads, warnings.pm, Unicode, our, v1.2.3, attributes
- open my $fh, lvalue subroutines, qr//, any new core modules, etc...).
-
-- MakeMaker should avoid having module dependencies. Avoid using modules
- which didn't come with 5.5.4 and avoid using features from newer
- versions. Sometimes this is unavoidable.
-
-
-Cross-Platform Compatibility
-
-- With the exception of MacOS Classic, MakeMaker must work on all
- architectures Perl works on (see perlport.pod). This means all Unixen
- (including Cygwin and MacOS X), Windows (including Win9x and DOS), and VMS.
-
-- Use the available macros rather than shell commands $(MV), $(CP),
- $(TOUCH), etc...
-
-- MakeMaker must work on many makes. GNU, BSD, Solaris, nmake, dmake, MMS
- and MMK to name the most common. Keep your make code as simple as
- possible.
-
-- Avoid special make variables (even $@).
-
-- Format targets as "target : dependency", the spacing is important.
-
-- Use $(NOECHO) instead of @.
-
-- Use - to tell make to ignore the exit code of a command. (Unfortunately,
- some make variants don't honor an $(IGNORE) macro).
-
-- Always put a space between $(NOECHO) and the command.
-
-- Always put a space between - (ignore) and the command.
-
-- Always put $(NOECHO) and - together, no space between them.
-
- # Right
- -$(NOECHO) command
- $(NOECHO) command
- - command
-
-- Often when you patch ExtUtils::MM_Unix, similar patches must be done
- to the other MM_* modules. If you can, please do this extra work
- otherwise I have to. If you can't, that's ok. We can help.
-
-- If possible, please test your patch on two Very Different architectures.
- Unix, Windows and VMS being Very Different. Note: Cygwin and OS X are
- Unixen for our purposes.
-
-- If nothing else, at least try it on two different Unixen or Windows
- machines (ie. Linux and IRIX or WinNT and Win95).
-
-- HP's TestDrive (www.testdrive.compaq.com) and SourceForge's
- compile farm (www.sourceforge.net) are good sources of testing
- machines of many different architectures and platforms. Accounts are
- free.
-
-- If you find yourself writing "do_this if $^O eq 'That'" (ie. checks on
- the OS type) perhaps your code belongs in one of the non-Unix MM_*
- modules (ie. MM_Win32, MM_VMS, etc...). If one does not exist, consider
- creating one. Its ok to have an MM_* module with only one method.
-
-- Some shells have very small buffers. This means command lines must
- be as small as possible. If your command is just too long, consider
- making it an ExtUtils::Command::MM function. If your command might
- receive many arguments (such as pod2man or pm_to_blib) consider
- using split_command() to split it into several, shorter calls.
-
-- Most shells quote differently. If you need to put a perl one-liner
- in the Makefile, please use oneliner() to generate it.
-
-
-Tests
-
-- Tests would be nice, but I'm not going to pretend testing MakeMaker
- is easy. If nothing else, let us know how you tested your patch by
- hand.
-
-
-Documentation
-
-- Documentation would be nice.
-
-- If the new feature/method is private, please document it with POD
- wrapped in "=begin/end private" tags. That way it will be documented,
- but won't be displayed (future versions of perldoc may have options
- to display).
-
- =begin private
-
- =head3 _foo_bar
-
- $mm->_foo_bar
-
- Blah blah blah
-
- =end private
-
- =cut
-
- sub _foo_bar {
- ...
-
-- If you're overriding a method, document that its an override and
- *why* its being overridden. Don't repeat the original documentation.
+++ /dev/null
-If you wish to package MakeMaker in a binary package, here's some tips.
-
-tl;dr version:
-
-1a) Set the BUILDING_AS_PACKAGE environment variable to a true value.
-OR
-1b) Set the $BUILDING_AS_PACKAGE variable in the Makefile.PL to true.
-2) Package normally, but watch out for dependency loops.
-
-MakeMaker cannot have any dependencies, everything depends on it and
-that would be a dependency loop. It instead bundles pre-built copies
-of all its non-core dependencies in the bundled/ directory. It adds
-them to itself if they're not already installed.
-
-This can confuse packagers, it makes it look like MakeMaker contains a
-lot more modules than it really does and causes conflicts.
-
-You can tell MakeMaker not to use it's bundles and instead declare the
-dependencies normally. This is done either by setting the
-BUILDING_AS_PACKAGE environment variable to true or by patching the
-Makefile.PL and setting $BUILDING_AS_PACKAGE to true. On the down
-side, there will be dependency loops which your packaging system will
-have to resolve.
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use Compress::Zlib ;
-
-binmode STDIN;
-binmode STDOUT;
-my $x = deflateInit()
- or die "Cannot create a deflation stream\n" ;
-
-my ($output, $status) ;
-while (<>)
-{
- ($output, $status) = $x->deflate($_) ;
-
- $status == Z_OK
- or die "deflation failed\n" ;
-
- print $output ;
-}
-
-($output, $status) = $x->flush() ;
-
-$status == Z_OK
- or die "deflation failed\n" ;
-
-print $output ;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use Compress::Zlib ;
-
-my $x = inflateInit()
- or die "Cannot create a inflation stream\n" ;
-
-my $input = '' ;
-binmode STDIN;
-binmode STDOUT;
-
-my ($output, $status) ;
-while (read(STDIN, $input, 4096))
-{
- ($output, $status) = $x->inflate(\$input) ;
-
- print $output
- if $status == Z_OK or $status == Z_STREAM_END ;
-
- last if $status != Z_OK ;
-}
-
-die "inflation failed\n"
- unless $status == Z_STREAM_END ;
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use Compress::Zlib ;
-
-#die "Usage: gzcat file...\n"
-# unless @ARGV ;
-
-my $filename ;
-
-@ARGV = '-' unless @ARGV ;
-
-foreach my $filename (@ARGV) {
- my $buffer ;
-
- my $gz = gzopen($filename, "rb")
- or die "Cannot open $filename: $gzerrno\n" ;
-
- print $buffer while $gz->gzread($buffer) > 0 ;
-
- die "Error reading from $filename: $gzerrno" . ($gzerrno+0) . "\n"
- if $gzerrno != Z_STREAM_END ;
-
- $gz->gzclose() ;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use Compress::Zlib ;
-
-die "Usage: gzgrep pattern file...\n"
- unless @ARGV >= 2;
-
-my $pattern = shift ;
-
-my $file ;
-
-foreach $file (@ARGV) {
- my $gz = gzopen($file, "rb")
- or die "Cannot open $file: $gzerrno\n" ;
-
- while ($gz->gzreadline($_) > 0) {
- print if /$pattern/ ;
- }
-
- die "Error reading from $file: $gzerrno\n"
- if $gzerrno != Z_STREAM_END ;
-
- $gz->gzclose() ;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use Compress::Zlib ;
-
-binmode STDOUT; # gzopen only sets it on the fd
-
-#my $gz = gzopen(\*STDOUT, "wb")
-my $gz = gzopen('-', "wb")
- or die "Cannot open stdout: $gzerrno\n" ;
-
-while (<>) {
- $gz->gzwrite($_)
- or die "error writing: $gzerrno\n" ;
-}
-
-$gz->gzclose ;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-
-use IO::Uncompress::AnyUncompress qw( anyuncompress $AnyUncompressError );
-
-@ARGV = '-' unless @ARGV ;
-
-foreach my $file (@ARGV) {
-
- anyuncompress $file => '-',
- Transparent => 1,
- Strict => 0,
- or die "Cannot uncompress '$file': $AnyUncompressError\n" ;
-
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use IO::Uncompress::Bunzip2 qw( $Bunzip2Error );
-use strict ;
-use warnings ;
-
-#die "Usage: gzcat file...\n"
-# unless @ARGV ;
-
-my $file ;
-my $buffer ;
-my $s;
-
-@ARGV = '-' unless @ARGV ;
-
-foreach $file (@ARGV) {
-
- my $gz = new IO::Uncompress::Bunzip2 $file
- or die "Cannot open $file: $Bunzip2Error\n" ;
-
- print $buffer
- while ($s = $gz->read($buffer)) > 0 ;
-
- die "Error reading from $file: $Bunzip2Error\n"
- if $s < 0 ;
-
- $gz->close() ;
-}
-
+++ /dev/null
-#!/usr/bin/perl
-
-use strict ;
-use warnings ;
-use IO::Uncompress::Bunzip2 qw($Bunzip2Error);
-
-die "Usage: gzgrep pattern [file...]\n"
- unless @ARGV >= 1;
-
-my $pattern = shift ;
-my $file ;
-
-@ARGV = '-' unless @ARGV ;
-
-foreach $file (@ARGV) {
- my $gz = new IO::Uncompress::Bunzip2 $file
- or die "Cannot uncompress $file: $Bunzip2Error\n" ;
-
- while (<$gz>) {
- print if /$pattern/ ;
- }
-
- die "Error reading from $file: $Bunzip2Error\n"
- if $Bunzip2Error ;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-use IO::Compress::Bzip2 qw(:all);
-
-bzip2 '-' => '-'
- or die "bzstream: $Bzip2Error\n" ;
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use IO::Compress::Gzip qw( $GzipError );
-use strict ;
-use warnings ;
-
-die "Usage: gzappend gz-file file...\n"
- unless @ARGV ;
-
-
-my $output = shift @ARGV ;
-
-@ARGV = '-' unless @ARGV ;
-
-my $gz = new IO::Compress::Gzip $output, Merge => 1
- or die "Cannot open $output: $GzipError\n" ;
-
-$gz->write( [@ARGV] )
- or die "Cannot open $output: $GzipError\n" ;
-
-$gz->close;
-
-
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use IO::Uncompress::Gunzip qw( $GunzipError );
-use strict ;
-use warnings ;
-
-#die "Usage: gzcat file...\n"
-# unless @ARGV ;
-
-my $file ;
-my $buffer ;
-my $s;
-
-@ARGV = '-' unless @ARGV ;
-
-foreach $file (@ARGV) {
-
- my $gz = new IO::Uncompress::Gunzip $file
- or die "Cannot open $file: $GunzipError\n" ;
-
- print $buffer
- while ($s = $gz->read($buffer)) > 0 ;
-
- die "Error reading from $file: $GunzipError\n"
- if $s < 0 ;
-
- $gz->close() ;
-}
-
+++ /dev/null
-#!/usr/bin/perl
-
-use strict ;
-use warnings ;
-use IO::Uncompress::Gunzip qw($GunzipError);
-
-die "Usage: gzgrep pattern [file...]\n"
- unless @ARGV >= 1;
-
-my $pattern = shift ;
-my $file ;
-
-@ARGV = '-' unless @ARGV ;
-
-foreach $file (@ARGV) {
- my $gz = new IO::Uncompress::Gunzip $file
- or die "Cannot uncompress $file: $GunzipError\n" ;
-
- while (<$gz>) {
- print if /$pattern/ ;
- }
-
- die "Error reading from $file: $GunzipError\n"
- if $GunzipError ;
-}
-
-__END__
-foreach $file (@ARGV) {
- my $gz = gzopen($file, "rb")
- or die "Cannot open $file: $gzerrno\n" ;
-
- while ($gz->gzreadline($_) > 0) {
- print if /$pattern/ ;
- }
-
- die "Error reading from $file: $gzerrno\n"
- if $gzerrno != Z_STREAM_END ;
-
- $gz->gzclose() ;
-}
+++ /dev/null
-#!/usr/local/bin/perl
-
-use strict ;
-use warnings ;
-use IO::Compress::Gzip qw(gzip $GzipError);
-
-gzip '-' => '-', Minimal => 1
- or die "gzstream: $GzipError\n" ;
-
-#exit 0;
-
-__END__
-
-#my $gz = new IO::Compress::Gzip *STDOUT
-my $gz = new IO::Compress::Gzip '-'
- or die "gzstream: Cannot open stdout as gzip stream: $GzipError\n" ;
-
-while (<>) {
- $gz->write($_)
- or die "gzstream: Error writing gzip output stream: $GzipError\n" ;
-}
-
-$gz->close
- or die "gzstream: Error closing gzip output stream: $GzipError\n" ;
+++ /dev/null
-BEGIN {
- if ($ENV{PERL_CORE}) {
- chdir 't' if -d 't';
- @INC = ("../lib", "lib/compress");
- }
-}
-
-use lib qw(t t/compress);
-
-use strict;
-use warnings;
-use bytes;
-
-use Test::More ;
-use CompTestUtils;
-use IO::Compress::Bzip2 'bzip2' ;
-
-BEGIN
-{
- plan(skip_all => "Examples needs Perl 5.005 or better - you have Perl $]" )
- if $] < 5.005 ;
-
- # use Test::NoWarnings, if available
- my $extra = 0 ;
- $extra = 1
- if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
-
- plan tests => 19 + $extra ;
-}
-
-
-my $Inc = join " ", map qq["-I$_"] => @INC;
-$Inc = '"-MExtUtils::testlib"'
- if ! $ENV{PERL_CORE} && eval " require ExtUtils::testlib; " ;
-
-my $Perl = ($ENV{'FULLPERL'} or $^X or 'perl') ;
-$Perl = qq["$Perl"] if $^O eq 'MSWin32' ;
-
-$Perl = "$Perl $Inc -w" ;
-#$Perl .= " -Mblib " ;
-my $examples = $ENV{PERL_CORE} ? "../ext/IO-Compress/examples/io/bzip2"
- : "./examples/io/bzip2";
-
-my $hello1 = <<EOM ;
-hello
-this is
-a test
-message
-x ttttt
-xuuuuuu
-the end
-EOM
-
-my @hello1 = grep(s/$/\n/, split(/\n/, $hello1)) ;
-
-my $hello2 = <<EOM;
-
-Howdy
-this is the
-second
-file
-x ppppp
-xuuuuuu
-really the end
-EOM
-
-my @hello2 = grep(s/$/\n/, split(/\n/, $hello2)) ;
-
-my ($file1, $file2, $stderr) ;
-my $lex = new LexFile $file1, $file2, $stderr ;
-
-bzip2 \$hello1 => $file1 ;
-bzip2 \$hello2 => $file2 ;
-
-sub check
-{
- my $command = shift ;
- my $expected = shift ;
-
- my $lex = new LexFile my $stderr ;
-
- my $cmd = "$command 2>$stderr";
- my $stdout = `$cmd` ;
-
- my $aok = 1 ;
-
- $aok &= is $?, 0, " exit status is 0" ;
-
- $aok &= is readFile($stderr), '', " no stderr" ;
-
- $aok &= is $stdout, $expected, " expected content is ok"
- if defined $expected ;
-
- if (! $aok) {
- diag "Command line: $cmd";
- my ($file, $line) = (caller)[1,2];
- diag "Test called from $file, line $line";
- }
-
- 1 while unlink $stderr;
-}
-
-# bzcat
-# #####
-
-title "bzcat - command line" ;
-check "$Perl ${examples}/bzcat $file1 $file2", $hello1 . $hello2;
-
-title "bzcat - stdin" ;
-check "$Perl ${examples}/bzcat <$file1 ", $hello1;
-
-
-# bzgrep
-# ######
-
-title "bzgrep";
-check "$Perl ${examples}/bzgrep the $file1 $file2",
- join('', grep(/the/, @hello1, @hello2));
-
-for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
-
-
-
-# bzstream
-# ########
-
-{
- title "bzstream" ;
- writeFile($file1, $hello1) ;
- check "$Perl ${examples}/bzstream <$file1 >$file2";
-
- title "bzcat" ;
- check "$Perl ${examples}/bzcat $file2", $hello1 ;
-}
+++ /dev/null
-BEGIN {
- if ($ENV{PERL_CORE}) {
- chdir 't' if -d 't';
- @INC = ("../lib", "lib/compress");
- }
-}
-
-use lib qw(t t/compress);
-
-use strict;
-use warnings;
-use bytes;
-
-use Test::More ;
-use CompTestUtils;
-use IO::Compress::Gzip 'gzip' ;
-
-BEGIN
-{
- plan(skip_all => "Examples needs Perl 5.005 or better - you have Perl $]" )
- if $] < 5.005 ;
-
- # use Test::NoWarnings, if available
- my $extra = 0 ;
- $extra = 1
- if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
-
- plan tests => 19 + $extra ;
-}
-
-
-my $Inc = join " ", map qq["-I$_"] => @INC;
-$Inc = '"-MExtUtils::testlib"'
- if ! $ENV{PERL_CORE} && eval " require ExtUtils::testlib; " ;
-
-my $Perl = ($ENV{'FULLPERL'} or $^X or 'perl') ;
-$Perl = qq["$Perl"] if $^O eq 'MSWin32' ;
-
-$Perl = "$Perl $Inc -w" ;
-#$Perl .= " -Mblib " ;
-my $examples = $ENV{PERL_CORE} ? "../ext/IO-Compress/examples/io/gzip"
- : "./examples/io/gzip";
-
-my $hello1 = <<EOM ;
-hello
-this is
-a test
-message
-x ttttt
-xuuuuuu
-the end
-EOM
-
-my @hello1 = grep(s/$/\n/, split(/\n/, $hello1)) ;
-
-my $hello2 = <<EOM;
-
-Howdy
-this is the
-second
-file
-x ppppp
-xuuuuuu
-really the end
-EOM
-
-my @hello2 = grep(s/$/\n/, split(/\n/, $hello2)) ;
-
-my ($file1, $file2, $stderr) ;
-my $lex = new LexFile $file1, $file2, $stderr ;
-
-gzip \$hello1 => $file1 ;
-gzip \$hello2 => $file2 ;
-
-sub check
-{
- my $command = shift ;
- my $expected = shift ;
-
- my $lex = new LexFile my $stderr ;
-
-
- my $cmd = "$command 2>$stderr";
- my $stdout = `$cmd` ;
-
- my $aok = 1 ;
-
- $aok &= is $?, 0, " exit status is 0" ;
-
- $aok &= is readFile($stderr), '', " no stderr" ;
-
- $aok &= is $stdout, $expected, " expected content is ok"
- if defined $expected ;
-
- if (! $aok) {
- diag "Command line: $cmd";
- my ($file, $line) = (caller)[1,2];
- diag "Test called from $file, line $line";
- }
-
- 1 while unlink $stderr;
-}
-
-# gzcat
-# #####
-
-title "gzcat - command line" ;
-check "$Perl ${examples}/gzcat $file1 $file2", $hello1 . $hello2;
-
-title "gzcat - stdin" ;
-check "$Perl ${examples}/gzcat <$file1 ", $hello1;
-
-
-# gzgrep
-# ######
-
-title "gzgrep";
-check "$Perl ${examples}/gzgrep the $file1 $file2",
- join('', grep(/the/, @hello1, @hello2));
-
-for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
-
-
-
-# gzstream
-# ########
-
-{
- title "gzstream" ;
- writeFile($file1, $hello1) ;
- check "$Perl ${examples}/gzstream <$file1 >$file2";
-
- title "gzcat" ;
- check "$Perl ${examples}/gzcat $file2", $hello1 ;
-}
+++ /dev/null
-BEGIN {
- if ($ENV{PERL_CORE}) {
- chdir 't' if -d 't';
- @INC = ("../lib", "lib/compress");
- }
-}
-
-use lib qw(t t/compress);
-
-use strict;
-use warnings;
-use bytes;
-
-use Test::More ;
-use CompTestUtils;
-use Compress::Zlib;
-
-BEGIN
-{
- plan(skip_all => "Examples needs Perl 5.005 or better - you have Perl $]" )
- if $] < 5.005 ;
-
- # use Test::NoWarnings, if available
- my $extra = 0 ;
- $extra = 1
- if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
-
- plan tests => 26 + $extra ;
-}
-
-
-my $Inc = join " ", map qq["-I$_"] => @INC;
-$Inc = '"-MExtUtils::testlib"'
- if ! $ENV{PERL_CORE} && eval " require ExtUtils::testlib; " ;
-
-my $Perl = ($ENV{'FULLPERL'} or $^X or 'perl') ;
-$Perl = qq["$Perl"] if $^O eq 'MSWin32' ;
-
-$Perl = "$Perl $Inc -w" ;
-my $examples = $ENV{PERL_CORE} ? "../ext/IO-Compress/examples/compress-zlib"
- : "./examples/compress-zlib";
-
-my $hello1 = <<EOM ;
-hello
-this is
-a test
-message
-x ttttt
-xuuuuuu
-the end
-EOM
-
-my @hello1 = grep(s/$/\n/, split(/\n/, $hello1)) ;
-
-my $hello2 = <<EOM;
-
-Howdy
-this is the
-second
-file
-x ppppp
-xuuuuuu
-really the end
-EOM
-
-my @hello2 = grep(s/$/\n/, split(/\n/, $hello2)) ;
-
-my $file1 = "hello1.gz" ;
-my $file2 = "hello2.gz" ;
-my $stderr = "err.out" ;
-
-for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
-
-
-my $gz = gzopen($file1, "wb");
-$gz->gzwrite($hello1);
-$gz->gzclose();
-
-$gz = gzopen($file2, "wb");
-$gz->gzwrite($hello2);
-$gz->gzclose();
-
-sub check
-{
- my $command = shift ;
- my $expected = shift ;
-
- my $stderr = 'err.out';
- 1 while unlink $stderr;
-
- my $cmd = "$command 2>$stderr";
- my $stdout = `$cmd` ;
-
- my $aok = 1 ;
-
- $aok &= is $?, 0, " exit status is 0" ;
-
- $aok &= is readFile($stderr), '', " no stderr" ;
-
- $aok &= is $stdout, $expected, " expected content is ok"
- if defined $expected ;
-
- if (! $aok) {
- diag "Command line: $cmd";
- my ($file, $line) = (caller)[1,2];
- diag "Test called from $file, line $line";
- }
-
- 1 while unlink $stderr;
-}
-
-# gzcat
-# #####
-
-title "gzcat - command line" ;
-check "$Perl ${examples}/gzcat $file1 $file2", $hello1 . $hello2;
-
-title "gzcat - stdin" ;
-check "$Perl ${examples}/gzcat <$file1 ", $hello1;
-
-
-# gzgrep
-# ######
-
-title "gzgrep";
-check "$Perl ${examples}/gzgrep the $file1 $file2",
- join('', grep(/the/, @hello1, @hello2));
-
-for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
-
-
-
-# filtdef/filtinf
-# ##############
-
-
-writeFile($file1, $hello1) ;
-writeFile($file2, $hello2) ;
-
-title "filtdef" ;
-# there's no way to set binmode on backticks in Win32 so we won't use $a later
-check "$Perl ${examples}/filtdef $file1 $file2" ;
-
-title "filtdef | filtinf";
-check "$Perl ${examples}/filtdef $file1 $file2 | $Perl ${examples}/filtinf",
- $hello1 . $hello2;
-# gzstream
-# ########
-
-{
- title "gzstream" ;
- writeFile($file1, $hello1) ;
- check "$Perl ${examples}/gzstream <$file1 >$file2";
-
- title "gzcat" ;
- check "$Perl ${examples}/gzcat $file2", $hello1 ;
-}
-
-END
-{
- for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
-}
-
+++ /dev/null
-
- Locale-Codes Distribution
-
-This distribution contains Perl modules which can be used to process
-ISO codes for identifying languages, countries, scripts,
-and currencies & funds.
-
-It consists of a number of modules used for each of the different
-types of codes.
-
-For example, to deal with country codes, use the:
-
- Locale::Codes::Country
-
-module. Please refer to the Locale::Codes manual for a list of
-modules included in this distribution.
-
-The modules are documented using pod. When you "make install", you
-will get man-pages: Local::Codes and each of the modules listed above.
-
-I plan on releasing a new version about several times a year to make
-sure that all of the codes are current. If a code changes in any standard,
-and you want a new release, just email me and I'll put out a new release.
-
+++ /dev/null
-NAME
-
- README.win32 - Customise and build Sys::Syslog with Win32 EventLog support
-
-
-DESCRIPTION
-
- This package includes support for the Win32 Event log. This requires
- building a message file and then compiling it and linking it into the
- final .DLL produced by MakeMaker. The default message text file used
- by Sys::Syslog is PerlLog.mc, located in the win32/ subdirectory.
-
- If the message file is updated then you need to go in the win32/
- subdirectory and run the "compile.pl" command to update the relevant
- files. Note that Sys::Syslog::Win32 is built by this process.
-
- The following files are in the win32 directory:
-
- PerlLog.mc -- Message file, change this if you change anything.
- compile.pl -- Compile the message file and produce Win32.pm and
- PerlLog.RES. Requires that mc.exe and rc.exe are
- in the path.
-
- PerlLog.RES -- Precompiled resource file, used when building the DLL
- Win32.pm -- Generated Win32 module for working with the resource file
-
- When building win32/PerlLog.RES will be linked into the final XS file,
- and win32/Win32.pm will be copied to lib/Sys/Syslog/Win32.pm, which will
- then be installed by MakeMaker as per normal.
-
+++ /dev/null
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-
-use lib '../lib';
-use Test::Builder;
-
-=head1 NOTES
-
-Must have explicit finalize
-Must name nest
-Trailing summary test
-Pass chunk o'TAP
-No builder may have more than one child active
-What happens if you call ->finalize with open children
-
-=cut
-
-my $builder = Test::Builder->new;
-$builder->plan(tests => 7);
-for( 1 .. 3 ) {
- $builder->ok( $_, "We're on $_" );
- $builder->note("We ran $_");
-}
-{
- my $indented = $builder->child;
- $indented->plan('no_plan');
- for( 1 .. 1+int(rand(5)) ) {
- $indented->ok( 1, "We're on $_" );
- }
- $indented->finalize;
-}
-for( 7, 8, 9 ) {
- $builder->ok( $_, "We're on $_" );
-}
+++ /dev/null
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-
-use lib '../lib';
-use Test::More tests => 3;
-
-ok 1;
-subtest 'some name' => sub {
- my $num_tests = 2 + int( rand(3) );
- plan tests => $num_tests;
- ok 1 for 1 .. $num_tests - 1;
- subtest 'some name' => sub {
- plan 'no_plan';
- ok 1 for 1 .. 2 + int( rand(3) );
- };
-};
-ok 1;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use blib;
-use Net::FTP;
-use Getopt::Long;
-
-$opt_debug = undef;
-$opt_firewall = undef;
-
-GetOptions(qw(debug firewall=s));
-
-@firewall = defined $opt_firewall ? (Firewall => $opt_firewall) : ();
-
-foreach $host (@ARGV)
- {
- $ftp = Net::FTP->new($host, @firewall, Debug => $opt_debug ? 1 : 0);
- $ftp->login();
- print $ftp->pwd,"\n";
- $ftp->quit;
- }
-
+++ /dev/null
-#!/usr/local/bin/perl
-
-use Net::DummyInetd;
-use Net::SMTP;
-
-$p = new Net::DummyInetd qw(/usr/lib/sendmail -ba -bs);
-
-$smtp = Net::SMTP->new('localhost', Port => $p->port, Debug => 7);
-$smtp->quit;
+++ /dev/null
-#!/usr/local/bin/perl
-
-use blib;
-use Getopt::Long;
-use Net::NNTP;
-
-$opt_debug = undef;
-
-GetOptions(qw(debug));
-
-@groups = @ARGV;
-
-$nntp = Net::NNTP->new('news', Debug => $opt_debug ? 1 : 0);
-
-if($subs = $nntp->newsgroups)
- {
- print join("\n",(keys %$subs)[0 .. 10]),"\n";
- }
- else
- {
- warn $nntp->message;
- }
-
-foreach $group (@groups)
- {
- $new = $nntp->newnews(time - 3600, lc $group);
-
- if(ref($new) && scalar(@$new))
- {
- print@{$news}[0..3],"\n"
- if $news = $nntp->article($new->[-1]);
-
- warn $nntp->message
- unless $news;
- }
- }
-
-$nntp->quit;
-
-
+++ /dev/null
-#!/usr/bin/perl5
-
-### Subject: Re: Fuller example of Net::NNTP?
-### Date: Tue, 4 Feb 1997 10:37:58 -0800
-### From: "Paul E. Hoffman" <phoffman@imc.org>
-### To: Graham Barr <gbarr@ti.com>
-###
-### Thanks for your reply. After looking at the examples, I realized that
-### you're not doing what I want, which is to store the messages on the local
-### hard disk with the same message number as what was on the remote. So, I
-### rolled my own program, although I haven't finished it yet (I have a hook
-### for expiring, but haven't done it yet).
-###
-### You are welcome to use this in the Net:: distribution if you think it is
-### useful.
-###
-### NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-###
-### This script is included as-is, I give no guarantee that it will
-### work on every system
-###
-
-use Net::NNTP;
-
-$BaseDir = '/usr/usenet';
-chdir($BaseDir) or die "Could not cd to $BaseDir\n";
-
-# Format of grouplist is:
-# groupname<tab>expirationdays
-# expirationdays is the number of days to leave the articles around;
-# set it to 0 if you want the articles to stay forever
-# If the groupname starts with a #, it is skipped
-open(GROUPLIST, 'grouplist.txt') or die "Could not open grouplist.txt\n";
-while(<GROUPLIST>) {
- $Line = $_; chomp($Line);
- if($Line eq '') { next }; # Skip blank lines
- if(substr($Line, 0, 1) eq '#') { next }; # Skip comments
- push(@Groups, $Line)
-}
-
-$NntpPtr = Net::NNTP->new('news.server.com');
-
-foreach $GroupLine (@Groups) {
- ($GroupName, $GroupExp) = split(/\s/, $GroupLine, 2);
- # Process the expiration first (still to be done...)
-
- # See if this is a new group
- unless(-e "$BaseDir/$GroupName") {
- unless(mkdir("$BaseDir/$GroupName", 0755))
- { die "Could not make $BaseDir/$GroupName\n" }
- }
- chdir("$BaseDir/$GroupName") or die "Couldn't chdir to $GroupName\n";
- # Find the last article in the directory
- @AllInDir = <*>; @RevSortedAllInDir = reverse(sort(@AllInDir));
- $LenArr = @RevSortedAllInDir;
- if($LenArr > 0) { $NumLastInDir = $RevSortedAllInDir[0] }
- else { $NumLastInDir = 0 }
- ($NumArt, $NumFirst, $NumLast, $XGroupName) =
-$NntpPtr->group($GroupName);
-
- if($NumLast == $NumLastInDir) { next } # No new articles
- if($NumLast < $NumLastInDir)
- { die "In $GroupName, the last number was $NumLast, but the " .
- " last number in the directory was $NumLastInDir\n" }
- # Figure out which article to start from
- if($NumLastInDir == 0) { $GetArtNum = $NumFirst }
- else { $GetArtNum = $NumLastInDir + 1 }
-
- # Now read each of the new articles
- while(1) { # Loop until "last" is called
- $ArtRef = $NntpPtr->article($GetArtNum);
- @ArtArr = @$ArtRef; $ArtArrLen = @ArtArr;
- if($ArtArrLen > 0 ) { # Skip article numbers that had 0 len
- open(OUT, ">$GetArtNum") or
- die "Could not create $GroupName/$GetArtNum\n";
- print OUT @$ArtRef; close(OUT);
- }
-
- # Check if we're at the end
- if($GetArtNum == $NumLast) { last }
- $GetArtNum += 1; # Increment the article number to get
- }
-}
-
-$NntpPtr->quit;
-exit;
+++ /dev/null
-#!/usr/local/bin/perl -w
-
-use blib;
-use Net::POP3;
-use Getopt::Long;
-
-$opt_debug = 0;
-$opt_user = undef;
-
-GetOptions(qw(debug user=s));
-
-$pop = Net::POP3->new('backup3', Debug => $opt_debug ? 6 : 0);
-
-$user = $opt_user || $ENV{USER} || $ENV{LOGNAME};
-
-$count = $pop->login($user);
-
-if($count)
- {
- $m = $pop->get(1);
- print @$m if $m;
- }
-
-$pop->quit;
+++ /dev/null
-#!/usr/local/bin/perl -w
-
-use blib;
-use Net::SMTP;
-use Getopt::Long;
-
-=head1 NAME
-
- smtp.self - mail a message via smtp
-
-=head1 DESCRIPTION
-
-C<smtp.self> will attempt to send a message to a given user
-
-=head1 OPTIONS
-
-=over 4
-
-=item -debug
-
-Enabe the output of dubug information
-
-=item -help
-
-Display this help text and quit
-
-=item -user USERNAME
-
-Send the message to C<USERNAME>
-
-=head1 EXAMPLE
-
- demos/smtp.self -user foo.bar
-
- demos/smtp.self -debug -user Graham.Barr
-
-=back
-
-=cut
-
-$opt_debug = undef;
-$opt_user = undef;
-$opt_help = undef;
-GetOptions(qw(debug user=s help));
-
-exec("pod2text $0")
- if defined $opt_help;
-
-Net::SMTP->debug(1) if $opt_debug;
-
-$smtp = Net::SMTP->new("mailhost");
-
-$user = $opt_user || $ENV{USER} || $ENV{LOGNAME};
-
-$smtp->mail($user) && $smtp->to($user);
-$smtp->reset;
-
-if($smtp->mail($user) && $smtp->to($user))
- {
- $smtp->data();
-
- map { s/-USER-/$user/g } @data=<DATA>;
-
- $smtp->datasend(@data);
- $smtp->dataend;
- }
-else
- {
- warn $smtp->message;
- }
-
-$smtp->quit;
-
-__DATA__
-To: <-USER->
-Subject: A test message
-
-The message was sent directly via SMTP using Net::SMTP
-.
-The message was sent directly via SMTP using Net::SMTP
+++ /dev/null
-#!/usr/local/bin/perl -w
-
-use blib;
-use Net::Time qw(inet_time inet_daytime);
-
-print inet_daytime('localhost');
-print inet_daytime('localhost','tcp');
-print inet_daytime('localhost','udp');
-
-print inet_time('localhost'),"\n";
-print inet_time('localhost','tcp'),"\n";
-print inet_time('localhost','udp'),"\n";
-