From 4755096ec61711c5104ba0b6b9314f32ca0351fe Mon Sep 17 00:00:00 2001 From: Gurusamy Sarathy Date: Tue, 11 Jul 2000 19:27:48 +0000 Subject: [PATCH] integrate cfgperl changes#6293..6324 into mainline p4raw-link: @6324 on //depot/cfgperl: 81bf48a6dbba4b295dfa172a17ca70b654dbf225 p4raw-link: @6293 on //depot/cfgperl: 6e37ea6052902cde1aeb08a2129ffc7c8ea53736 p4raw-id: //depot/perl@6369 p4raw-branched: from //depot/cfgperl@6368 'branch in' lib/Win32.pod lib/lib_pm.PL p4raw-deleted: from //depot/cfgperl@6368 'delete in' pod/Win32.pod (@5937..) pod/buildtoc (@6091..) lib/lib.pm.PL (@6227..) pod/Makefile (@6232..) p4raw-integrated: from //depot/cfgperl@6368 'copy in' thread.h (@5656..) lib/warnings/register.pm (@5704..) ext/B/B/Stash.pm (@5972..) lib/CGI/Util.pm (@6034..) util.c (@6217..) gv.c (@6244..) pp.c (@6260..) doop.c (@6269..) pod/perlfunc.pod (@6277..) pp_ctl.c (@6293..) makedef.pl (@6301..) embed.h global.sym objXSUB.h perlapi.c proto.h (@6305..) win32/Makefile (@6307..) Makefile.SH (@6309..) t/op/method.t (@6312..) sv.h (@6315..) 'ignore' op.c (@6273..) 'merge in' embed.pl win32/win32.c (@6305..) p4raw-integrated: from //depot/cfgperl@6324 'merge in' toke.c (@6307..) p4raw-branched: from //depot/cfgperl@6323 'branch in' pod/buildtoc.PL (@6319..) p4raw-integrated: from //depot/cfgperl@6323 'copy in' pod/perl.pod (@6319..) pod/perltoc.pod (@6322..) 'merge in' MANIFEST (@6319..) p4raw-branched: from //depot/cfgperl@6319 'branch in' pod/Makefile.SH p4raw-integrated: from //depot/cfgperl@6315 'ignore' pp_hot.c (@6313..) p4raw-integrated: from //depot/cfgperl@6311 'copy in' ext/POSIX/POSIX.pod (@6296..) p4raw-integrated: from //depot/cfgperl@6307 'merge in' doio.c (@6223..) --- MANIFEST | 10 +- Makefile.SH | 21 +- doio.c | 4 +- doop.c | 6 +- embed.h | 14 +- embed.pl | 5 +- ext/B/B/Stash.pm | 8 + ext/POSIX/POSIX.pod | 608 ++-- global.sym | 2 +- gv.c | 4 +- lib/CGI/Util.pm | 8 + {pod => lib}/Win32.pod | 0 lib/{lib.pm.PL => lib_pm.PL} | 1 + lib/warnings/register.pm | 8 + makedef.pl | 2 +- objXSUB.h | 10 +- perlapi.c | 9 + pod/Makefile | 401 --- pod/Makefile.SH | 158 ++ pod/buildtoc | 259 -- pod/buildtoc.PL | 467 +++ pod/perl.pod | 74 +- pod/perlfunc.pod | 30 +- pod/perltoc.pod | 6458 +++++++++++++++++++++++++++++------------- pp.c | 2 +- pp_ctl.c | 4 +- proto.h | 5 +- sv.h | 17 +- t/op/method.t | 5 + thread.h | 11 +- toke.c | 52 +- util.c | 19 +- win32/Makefile | 2 + win32/win32.c | 9 +- 34 files changed, 5837 insertions(+), 2856 deletions(-) rename {pod => lib}/Win32.pod (100%) rename lib/{lib.pm.PL => lib_pm.PL} (99%) delete mode 100644 pod/Makefile create mode 100644 pod/Makefile.SH delete mode 100644 pod/buildtoc create mode 100644 pod/buildtoc.PL diff --git a/MANIFEST b/MANIFEST index 6573182..16893a5 100644 --- a/MANIFEST +++ b/MANIFEST @@ -720,7 +720,7 @@ lib/hostname.pl Old hostname code lib/importenv.pl Perl routine to get environment into variables lib/integer.pm For "use integer" lib/less.pm For "use less" -lib/lib.pm.PL For "use lib" +lib/lib_pm.PL For "use lib", produces lib/lib.pm lib/locale.pm For "use locale" lib/look.pl A "look" equivalent lib/newgetopt.pl A perl library supporting long option parsing @@ -1008,6 +1008,7 @@ lib/validate.pl Perl library supporting wholesale file mode validation lib/vars.pm Declare pseudo-imported global variables lib/warnings.pm For "use warnings" lib/warnings/register.pm For "use warnings::register" +lib/Win32.pod Documentation for Win32 extras makeaperl.SH perl script that produces a new perl binary makedef.pl Create symbol export lists for linking makedepend.SH Precursor to makedepend @@ -1117,11 +1118,10 @@ plan9/plan9.c Plan9 port: Plan9-specific C routines plan9/plan9ish.h Plan9 port: Plan9-specific C header file plan9/setup.rc Plan9 port: script for easy build+install plan9/versnum Plan9 port: script to print version number -pod/Makefile Make pods into something else -pod/Win32.pod Documentation for Win32 extras -pod/buildtoc generate perltoc.pod +pod/Makefile.SH generate Makefile whichs makes pods into something else +pod/buildtoc.PL generate buildtoc which generates perltoc.pod pod/checkpods.PL Tool to check for common errors in pods -pod/perl.pod Top level perl man page +pod/perl.pod Top level perl documentation pod/perl5004delta.pod Changes from 5.003 to 5.004 pod/perl5005delta.pod Changes from 5.004 to 5.005 pod/perl56delta.pod Changes from 5.005 to 5.6 diff --git a/Makefile.SH b/Makefile.SH index 52789b9..a80e93b 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -222,21 +222,24 @@ private = preplibrary lib/ExtUtils/Miniperl.pm lib/Config.pm # Files to be built with variable substitution before miniperl # is available. sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \ - makedir.SH myconfig.SH writemain.SH + makedir.SH myconfig.SH writemain.SH pod/Makefile.SH shextract = Makefile cflags config.h makeaperl makedepend \ - makedir myconfig writemain + makedir myconfig writemain pod/Makefile # Files to be built with variable substitution after miniperl is # available. Dependencies handled manually below (for now). pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL \ - pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL lib/lib.pm.PL + pod/pod2usage.PL pod/podchecker.PL pod/podselect.PL \ + pod/buildtoc.PL +# lib/lib.pm is not listed here because it has a rule of its own. plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text \ - pod/pod2usage pod/podchecker pod/podselect lib/lib.pm + pod/pod2usage pod/podchecker pod/podselect \ + pod/buildtoc -addedbyconf = UU $(shextract) $(plextract) pstruct +addedbyconf = UU $(shextract) $(plextract) lib/lib.pm pstruct h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h @@ -286,7 +289,7 @@ compile: all translators: miniperl lib/Config.pm FORCE @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all -utilities: miniperl lib/Config.pm $(plextract) FORCE +utilities: miniperl lib/Config.pm $(plextract) lib/lib.pm FORCE @echo " "; echo " Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all @@ -526,6 +529,9 @@ lib/re.pm: ext/re/re.pm $(plextract): miniperl lib/Config.pm $(LDLIBPTH) ./miniperl -Ilib $@.PL +lib/lib.pm: miniperl lib/Config.pm + $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL + extra.pods: miniperl -@test -f extra.pods && rm -f `cat extra.pods` -@rm -f extra.pods @@ -635,6 +641,9 @@ regen_headers: FORCE -perl regcomp.pl -perl warnings.pl +regen_pods: FORCE + -cd pod; $(LDLIBPTH) make regen_pods + # Extensions: # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will # automatically get built. There should ordinarily be no need to change diff --git a/doio.c b/doio.c index 970eaed..8789df9 100644 --- a/doio.c +++ b/doio.c @@ -476,13 +476,13 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw, SV *sv; PerlLIO_dup2(PerlIO_fileno(fp), fd); - MUTEX_LOCK(&PL_fdpid_mutex); + LOCK_FDPID_MUTEX; sv = *av_fetch(PL_fdpid,PerlIO_fileno(fp),TRUE); (void)SvUPGRADE(sv, SVt_IV); pid = SvIVX(sv); SvIVX(sv) = 0; sv = *av_fetch(PL_fdpid,fd,TRUE); - MUTEX_UNLOCK(&PL_fdpid_mutex); + UNLOCK_FDPID_MUTEX; (void)SvUPGRADE(sv, SVt_IV); SvIVX(sv) = pid; if (!was_fdopen) diff --git a/doop.c b/doop.c index 3394db2..0c6e690 100644 --- a/doop.c +++ b/doop.c @@ -23,11 +23,11 @@ #define HALF_UPGRADE(start,end) { \ - U8* new; \ + U8* newstr; \ STRLEN len; \ len = end-start; \ - new = bytes_to_utf8(start, &len); \ - Copy(new,start,len,U8*); \ + newstr = bytes_to_utf8(start, &len); \ + Copy(newstr,start,len,U8*); \ end = start + len; \ } diff --git a/embed.h b/embed.h index 6fc3721..928be19 100644 --- a/embed.h +++ b/embed.h @@ -765,6 +765,9 @@ #endif #define runops_standard Perl_runops_standard #define runops_debug Perl_runops_debug +#if defined(USE_THREADS) +#define sv_lock Perl_sv_lock +#endif #define sv_catpvf_mg Perl_sv_catpvf_mg #define sv_vcatpvf_mg Perl_sv_vcatpvf_mg #define sv_catpv_mg Perl_sv_catpv_mg @@ -1132,7 +1135,6 @@ #define xstat S_xstat # endif #endif -#define lock Perl_lock #if defined(PERL_OBJECT) #endif #define ck_anoncode Perl_ck_anoncode @@ -2215,6 +2217,9 @@ #endif #define runops_standard() Perl_runops_standard(aTHX) #define runops_debug() Perl_runops_debug(aTHX) +#if defined(USE_THREADS) +#define sv_lock(a) Perl_sv_lock(aTHX_ a) +#endif #define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c) #define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) #define sv_catpvn_mg(a,b,c) Perl_sv_catpvn_mg(aTHX_ a,b,c) @@ -2577,7 +2582,6 @@ #define xstat(a) S_xstat(aTHX_ a) # endif #endif -#define lock(a) Perl_lock(aTHX_ a) #if defined(PERL_OBJECT) #endif #define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) @@ -4337,6 +4341,10 @@ #define runops_standard Perl_runops_standard #define Perl_runops_debug CPerlObj::Perl_runops_debug #define runops_debug Perl_runops_debug +#if defined(USE_THREADS) +#define Perl_sv_lock CPerlObj::Perl_sv_lock +#define sv_lock Perl_sv_lock +#endif #define Perl_sv_catpvf_mg CPerlObj::Perl_sv_catpvf_mg #define sv_catpvf_mg Perl_sv_catpvf_mg #define Perl_sv_vcatpvf_mg CPerlObj::Perl_sv_vcatpvf_mg @@ -5000,8 +5008,6 @@ #define xstat S_xstat # endif #endif -#define Perl_lock CPerlObj::Perl_lock -#define lock Perl_lock #if defined(PERL_OBJECT) #endif #define Perl_ck_anoncode CPerlObj::Perl_ck_anoncode diff --git a/embed.pl b/embed.pl index de65cdc..2b75a49 100755 --- a/embed.pl +++ b/embed.pl @@ -2106,6 +2106,9 @@ Ap |struct perl_vars *|GetVars #endif Ap |int |runops_standard Ap |int |runops_debug +#if defined(USE_THREADS) +Ap |SV* |sv_lock |SV *sv +#endif Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|... Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args Apd |void |sv_catpv_mg |SV *sv|const char *ptr @@ -2514,8 +2517,6 @@ s |void |xstat |int # endif #endif -Arp |SV* |lock |SV *sv - #if defined(PERL_OBJECT) }; #endif diff --git a/ext/B/B/Stash.pm b/ext/B/B/Stash.pm index b9b828f..f3a8247 100644 --- a/ext/B/B/Stash.pm +++ b/ext/B/B/Stash.pm @@ -2,6 +2,14 @@ # vishalb@hotmail.com package B::Stash; +=pod + +=head1 NAME + +B::Stash - show what stashes are loaded + +=cut + BEGIN { %Seen = %INC } CHECK { diff --git a/ext/POSIX/POSIX.pod b/ext/POSIX/POSIX.pod index 186d72e..9abad2a 100644 --- a/ext/POSIX/POSIX.pod +++ b/ext/POSIX/POSIX.pod @@ -65,15 +65,19 @@ all. This could be construed to be a bug. =item _exit -This is identical to the C function C<_exit()>. +This is identical to the C function C<_exit()>. It exits the program +immediately which means among other things buffered I/O is B flushed. =item abort -This is identical to the C function C. +This is identical to the C function C. It terminates the +process with a C signal unless caught by a signal handler or +if the handler does not return normally (it e.g. does a C). =item abs -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, returning +the absolute value of its numerical argument. =item access @@ -83,83 +87,117 @@ Determines the accessibility of a file. print "have read permission\n"; } -Returns C on failure. +Returns C on failure. Note: do not use C for +security purposes. Between the C call and the operation +you are preparing for the permissions might change: a classic +I. =item acos -This is identical to the C function C. +This is identical to the C function C, returning +the arcus cosine of its numerical argument. =item alarm -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +either for arming or disarming the C timer. =item asctime -This is identical to the C function C. +This is identical to the C function C. It returns +a string of the form + + "Fri Jun 2 18:22:13 2000\n\0" + +and it is called thusly + + $asctime = asctime($sec, $min, $hour, $mday, $mon, $year, + $wday, $yday, $isdst); + +The C<$mon> is zero-based: January equals C<0>. The C<$year> is +1900-based: 2001 equals C<101>. The C<$wday>, C<$yday>, and C<$isdst> +default to zero (and the first two are usually ignored anyway). =item asin -This is identical to the C function C. +This is identical to the C function C, returning +the arcus sine of its numerical argument. =item assert -Unimplemented. +Unimplemented, but you can use L and the L module +to achieve similar things. =item atan -This is identical to the C function C. +This is identical to the C function C, returning the +arcus tangent of its numerical argument. =item atan2 -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, returning +the arcus tangent defined by its two numerical arguments, the I +coordinate and the I coordinate. =item atexit -atexit() is C-specific: use END {} instead. +atexit() is C-specific: use C instead, see L. =item atof -atof() is C-specific. +atof() is C-specific. Perl converts strings to numbers transparently. +If you need to force a scalar to a number, add a zero to it. =item atoi -atoi() is C-specific. +atoi() is C-specific. Perl converts strings to numbers transparently. +If you need to force a scalar to a number, add a zero to it. +If you need to have just the integer part, see L. =item atol -atol() is C-specific. +atol() is C-specific. Perl converts strings to numbers transparently. +If you need to force a scalar to a number, add a zero to it. +If you need to have just the integer part, see L. =item bsearch -bsearch() not supplied. +bsearch() not supplied. For doing binary search on wordlists, +see L. =item calloc -calloc() is C-specific. +calloc() is C-specific. Perl does memory management transparently. =item ceil -This is identical to the C function C. +This is identical to the C function C, returning the smallest +integer value greater than or equal to the given numerical argument. =item chdir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, allowing +one to change the working (default) directory, see L. =item chmod -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, allowing +one to change file and directory permissions, see L. =item chown -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, allowing one +to change file and directory owners and groups, see L. =item clearerr -Use method C instead. +Use the method L instead, to reset the error +state (if any) and EOF state (if any) of the given stream. =item clock -This is identical to the C function C. +This is identical to the C function C, returning the +amount of spent processor time in microseconds. =item close @@ -171,17 +209,22 @@ C. Returns C on failure. +See also L. + =item closedir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for closing +a directory handle, see L. =item cos -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, for returning +the cosine of its numerical argument, see L. =item cosh -This is identical to the C function C. +This is identical to the C function C, for returning +the hyperbolic cosine of its numeric argument. =item creat @@ -191,6 +234,8 @@ C. Use C to close the file. $fd = POSIX::creat( "foo", 0611 ); POSIX::close( $fd ); +See also L and its C flag. + =item ctermid Generates the path name for the controlling terminal. @@ -199,25 +244,30 @@ Generates the path name for the controlling terminal. =item ctime -This is identical to the C function C. +This is identical to the C function C and equivalent +to C, see L and L. =item cuserid -Get the character login name of the user. +Get the login name of the owner of the current process. $name = POSIX::cuserid(); =item difftime -This is identical to the C function C. +This is identical to the C function C, for returning +the time difference (in seconds) between two times (as returned +by C), see L. =item div -div() is C-specific. +div() is C-specific, use L on the usual C division and +the modulus C<%>. =item dup -This is similar to the C function C. +This is similar to the C function C, for duplicating a file +descriptor. This uses file descriptors such as those obtained by calling C. @@ -226,7 +276,8 @@ Returns C on failure. =item dup2 -This is similar to the C function C. +This is similar to the C function C, for duplicating a file +descriptor to an another known file descriptor. This uses file descriptors such as those obtained by calling C. @@ -239,41 +290,47 @@ Returns the value of errno. $errno = POSIX::errno(); +This identical to the numerical values of the C<$!>, see L. + =item execl -execl() is C-specific. +execl() is C-specific, see L. =item execle -execle() is C-specific. +execle() is C-specific, see L. =item execlp -execlp() is C-specific. +execlp() is C-specific, see L. =item execv -execv() is C-specific. +execv() is C-specific, see L. =item execve -execve() is C-specific. +execve() is C-specific, see L. =item execvp -execvp() is C-specific. +execvp() is C-specific, see L. =item exit -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for exiting the +program, see L. =item exp -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning the exponent (I-based) of the numerical argument, +see L. =item fabs -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for returning +the absolute value of the numerical argument, see L. =item fclose @@ -281,7 +338,8 @@ Use method C instead. =item fcntl -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +see L. =item fdopen @@ -309,7 +367,8 @@ Use method C instead. =item fgets -Use method C instead. +Use method C instead. Similar to EE, also known +as L. =item fileno @@ -317,12 +376,19 @@ Use method C instead. =item floor -This is identical to the C function C. +This is identical to the C function C, returning the largest +integer value less than or equal to the numerical argument. =item fmod This is identical to the C function C. + $r = modf($x, $y); + +It returns the remainder C<$r = $x - $n*$y>, where C<$n = trunc($x/$y)>. +The C<$r> has the same sign as C<$x> and magnitude (absolute value) +less than the magnitude of C<$y>. + =item fopen Use method C instead. @@ -346,37 +412,37 @@ Returns C on failure. =item fprintf -fprintf() is C-specific--use printf instead. +fprintf() is C-specific, see L instead. =item fputc -fputc() is C-specific--use print instead. +fputc() is C-specific, see L instead. =item fputs -fputs() is C-specific--use print instead. +fputs() is C-specific, see L instead. =item fread -fread() is C-specific--use read instead. +fread() is C-specific, see L instead. =item free -free() is C-specific. +free() is C-specific. Perl does memory management transparently. =item freopen -freopen() is C-specific--use open instead. +freopen() is C-specific, see L instead. =item frexp Return the mantissa and exponent of a floating-point number. - ($mantissa, $exponent) = POSIX::frexp( 3.14 ); + ($mantissa, $exponent) = POSIX::frexp( 1.234e56 ); =item fscanf -fscanf() is C-specific--use <> and regular expressions instead. +fscanf() is C-specific, use EE and regular expressions instead. =item fseek @@ -401,170 +467,217 @@ Use method C instead. =item fwrite -fwrite() is C-specific--use print instead. +fwrite() is C-specific, see L instead. =item getc -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +see L. =item getchar -Returns one character from STDIN. +Returns one character from STDIN. Identical to Perl's C, +see L. =item getcwd Returns the name of the current working directory. +See also L. =item getegid -Returns the effective group id. +Returns the effective group identifier. Similar to Perl' s builtin +variable C<$(>, see L. =item getenv Returns the value of the specified enironment variable. +The same information is available through the C<%ENV> array. =item geteuid -Returns the effective user id. +Returns the effective user identifier. Identical to Perl's builtin C<$E> +variable, see L. =item getgid -Returns the user's real group id. +Returns the user's real group identifier. Similar to Perl's builtin +variable C<$)>, see L. =item getgrgid -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning group entries by group identifiers, see +L. =item getgrnam -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning group entries by group names, see L. =item getgroups -Returns the ids of the user's supplementary groups. +Returns the ids of the user's supplementary groups. Similar to Perl's +builtin variable C<$)>, see L. =item getlogin -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning the user name associated with the current session, see +L. =item getpgrp -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning the prcess group identifier of the current process, see +L. =item getpid -Returns the process's id. +Returns the process identifier. Identical to Perl's builtin +variable C<$$>, see L. =item getppid -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning the process identifier of the parent process of the current +process , see L. =item getpwnam -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning user entries by user names, see L. =item getpwuid -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +returning user entries by user identifiers, see L. =item gets -Returns one line from STDIN. +Returns one line from C, similar to EE, also known +as the C function, see L. + +B: if you have C programs that still use C, be very +afraid. The C function is a source of endless grief because +it has no buffer overrun checks. It should B be used. The +C function should be preferred instead. =item getuid -Returns the user's id. +Returns the user's identifier. Identical to Perl's builtin C<$E> variable, +see L. =item gmtime -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +converting seconds since the epoch to a date in Greenwich Mean Time, +see L. =item isalnum This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead, or possibly the C construct. =item isalpha This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. =item isatty Returns a boolean indicating whether the specified filehandle is connected -to a tty. +to a tty. Similar to the C<-t> operator, see L. =item iscntrl This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. =item isdigit This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead, or the C construct. =item isgraph This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. =item islower This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. Do B use C. =item isprint This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. =item ispunct This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. =item isspace This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead, or the C construct. =item isupper This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead. Do B use C. =item isxdigit This is identical to the C function, except that it can apply to a single -character or to a whole string. +character or to a whole string. Consider using regular expressions and the +C construct instead, or simply C. =item kill -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for sending +signals to processes (oftern to terminate them), see L. =item labs -labs() is C-specific, use abs instead. +(For returning absolute values of long integers.) +labs() is C-specific, see L instead. =item ldexp -This is identical to the C function C. +This is identical to the C function C +for multiplying floating point numbers with powers of two. + + $x_quadrupled = POSIX::ldexp($x, 2); =item ldiv -ldiv() is C-specific, use / and int instead. +(For computing dividends of long integers.) +ldiv() is C-specific, use C and C instead. =item link -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for creating hard links into files, see L. =item localeconv Get numeric formatting information. Returns a reference to a hash containing the current locale formatting values. -The database for the B (Deutsch or German) locale. +Here is how to query the database for the B (Deutsch or German) locale. $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" ); print "Locale = $loc\n"; @@ -590,19 +703,34 @@ The database for the B (Deutsch or German) locale. =item localtime -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +converting seconds since the epoch to a date see L. =item log -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +returning the natural (I-based) logarithm of the numerical argument, +see L. =item log10 -This is identical to the C function C. +This is identical to the C function C, +returning the 10-base logarithm of the numerical argument. +You can also use + + sub log10 { log($_[0]) / log(10) } + +or + + sub log10 { log($_[0]) / 2.30258509299405 } + +or + + sub log10 { log($_[0]) * 0.434294481903252 } =item longjmp -longjmp() is C-specific: use die instead. +longjmp() is C-specific: use L instead. =item lseek @@ -616,49 +744,63 @@ Returns C on failure. =item malloc -malloc() is C-specific. +malloc() is C-specific. Perl does memory management transparently. =item mblen This is identical to the C function C. +Perl does not have any support for the wide and multibyte +characters of the C standards, so this might be a rather +useless function. =item mbstowcs This is identical to the C function C. +Perl does not have any support for the wide and multibyte +characters of the C standards, so this might be a rather +useless function. =item mbtowc This is identical to the C function C. +Perl does not have any support for the wide and multibyte +characters of the C standards, so this might be a rather +useless function. =item memchr -memchr() is C-specific, use index() instead. +memchr() is C-specific, see L instead. =item memcmp -memcmp() is C-specific, use eq instead. +memcmp() is C-specific, use C instead, see L. =item memcpy -memcpy() is C-specific, use = instead. +memcpy() is C-specific, use C<=>, see L, or see L. =item memmove -memmove() is C-specific, use = instead. +memmove() is C-specific, use C<=>, see L, or see L. =item memset -memset() is C-specific, use x instead. +memset() is C-specific, use C instead, see L. =item mkdir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for creating directories, see L. =item mkfifo -This is similar to the C function C. +This is similar to the C function C for creating +FIFO special files. -Returns C on failure. + if (mkfifo($path, $mode)) { .... + +Returns C on failure. The C<$mode> is similar to the +mode of C, see L. =item mktime @@ -689,13 +831,16 @@ Return the integral and fractional parts of a floating-point number. =item nice -This is similar to the C function C. +This is similar to the C function C, for changing +the scheduling preference of the current process. Positive +arguments mean more polite process, negative values more +needy process. Normal user processes can only be more polite. Returns C on failure. =item offsetof -offsetof() is C-specific. +offsetof() is C-specific, you probably want to see L instead. =item open @@ -720,6 +865,8 @@ Create a new file with mode 0640. Set up the file for writing. Returns C on failure. +See also L. + =item opendir Open a directory for reading. @@ -743,13 +890,17 @@ Returns C on failure. =item pause -This is similar to the C function C. +This is similar to the C function C, which suspends +the execution of the current process until a signal is received. Returns C on failure. =item perror -This is identical to the C function C. +This is identical to the C function C, which outputs to the +standard error stream the specified message followed by ": " and the +current error string. Use the C function and the C<$!> +variable instead, see L and L. =item pipe @@ -760,39 +911,45 @@ returned by C. POSIX::write( $fd0, "hello", 5 ); POSIX::read( $fd1, $buf, 5 ); +See also L. + =item pow -Computes $x raised to the power $exponent. +Computes C<$x> raised to the power C<$exponent>. $ret = POSIX::pow( $x, $exponent ); +You can also use the C<**> operator, see L. + =item printf -Prints the specified arguments to STDOUT. +Formats and prints the specified arguments to STDOUT. +See also L. =item putc -putc() is C-specific--use print instead. +putc() is C-specific, see L instead. =item putchar -putchar() is C-specific--use print instead. +putchar() is C-specific, see L instead. =item puts -puts() is C-specific--use print instead. +puts() is C-specific, see L instead. =item qsort -qsort() is C-specific, use sort instead. +qsort() is C-specific, see L instead. =item raise Sends the specified signal to the current process. +See also L and the C<$$> in L. =item rand -rand() is non-portable, use Perl's rand instead. +C is non-portable, see L instead. =item read @@ -805,21 +962,26 @@ read then Perl will extend it to make room for the request. Returns C on failure. +See also L. + =item readdir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for reading directory entries, see L. =item realloc -realloc() is C-specific. +realloc() is C-specific. Perl does memory management transparently. =item remove -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for removing files, see L. =item rename -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for renaming files, see L. =item rewind @@ -827,23 +989,29 @@ Seeks to the beginning of the file. =item rewinddir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function for +rewinding directory entry streams, see L. =item rmdir -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for removing (empty) directories, see L. =item scanf -scanf() is C-specific--use <> and regular expressions instead. +scanf() is C-specific, use EE and regular expressions instead, +see L. =item setgid -Sets the real group id for this process. +Sets the real group identifier for this process. +Identical to assigning a value to the Perl's builtin C<$)> variable, +see L. =item setjmp -setjmp() is C-specific: use eval {} instead. +C is C-specific: use C instead, +see L. =item setlocale @@ -879,17 +1047,21 @@ out which locales are available in your system. =item setpgid -This is similar to the C function C. +This is similar to the C function C for +setting the process group identifier of the current process. Returns C on failure. =item setsid -This is identical to the C function C. +This is identical to the C function C for +setting the session identifier of the current process. =item setuid -Sets the real user id for this process. +Sets the real user identifier for this process. +Identical to assigning a value to the Perl's builtin C<$E> variable, +see L. =item sigaction @@ -905,7 +1077,7 @@ Returns C on failure. =item siglongjmp -siglongjmp() is C-specific: use die instead. +siglongjmp() is C-specific: use L instead. =item sigpending @@ -933,7 +1105,8 @@ Returns C on failure. =item sigsetjmp -sigsetjmp() is C-specific: use eval {} instead. +C is C-specific: use C instead, +see L. =item sigsuspend @@ -949,63 +1122,79 @@ Returns C on failure. =item sin -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for returning the sine of the numerical argument, +see L. =item sinh -This is identical to the C function C. +This is identical to the C function C +for returning the hyperbolic sine of the numerical argument. =item sleep -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for suspending the execution of the current for process +for certain number of seconds, see L. =item sprintf -This is identical to Perl's builtin C function. +This is similar to Perl's builtin C function +for returning a string that has the arguments formatted as requested, +see L. =item sqrt This is identical to Perl's builtin C function. +for returning the square root of the numerical argument, +see L. =item srand -srand(). +Give a seed the pseudorandom number generator, see L. =item sscanf -sscanf() is C-specific--use regular expressions instead. +sscanf() is C-specific, use regular expressions instead, +see L. =item stat -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for retutning information about files and directories. =item strcat -strcat() is C-specific, use .= instead. +strcat() is C-specific, use C<.=> instead, see L. =item strchr -strchr() is C-specific, use index() instead. +strchr() is C-specific, see L instead. =item strcmp -strcmp() is C-specific, use eq instead. +strcmp() is C-specific, use C or C instead, see L. =item strcoll -This is identical to the C function C. +This is identical to the C function C +for collating (comparing) strings transformed using +the C function. Not really needed since +Perl can do this transparently, see L. =item strcpy -strcpy() is C-specific, use = instead. +strcpy() is C-specific, use C<=> instead, see L. =item strcspn -strcspn() is C-specific, use regular expressions instead. +strcspn() is C-specific, use regular expressions instead, +see L. =item strerror Returns the error string for the specified errno. +Identical to the string form of the C<$!>, see L. =item strftime @@ -1034,39 +1223,38 @@ The string for Tuesday, December 12, 1995. =item strlen -strlen() is C-specific, use length instead. +strlen() is C-specific, use C instead, see L. =item strncat -strncat() is C-specific, use .= instead. +strncat() is C-specific, use C<.=> instead, see L. =item strncmp -strncmp() is C-specific, use eq instead. +strncmp() is C-specific, use C instead, see L. =item strncpy -strncpy() is C-specific, use = instead. - -=item stroul - -stroul() is C-specific. +strncpy() is C-specific, use C<=> instead, see L. =item strpbrk -strpbrk() is C-specific. +strpbrk() is C-specific, use regular expressions instead, +see L. =item strrchr -strrchr() is C-specific, use rindex() instead. +strrchr() is C-specific, see L instead. =item strspn -strspn() is C-specific. +strspn() is C-specific, use regular expressions instead, +see L. =item strstr -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +see L. =item strtod @@ -1093,7 +1281,8 @@ When called in a scalar context strtod returns the parsed number. =item strtok -strtok() is C-specific. +strtok() is C-specific, use regular expressions instead, see +L, or L. =item strtol @@ -1127,12 +1316,12 @@ When called in a scalar context strtol returns the parsed number. =item strtoul -String to unsigned (long) integer translation. strtoul is identical -to strtol except that strtoul only parses unsigned integers. See -I for details. +String to unsigned (long) integer translation. strtoul() is identical +to strtol() except that strtoul() only parses unsigned integers. See +L for details. -Note: Some vendors supply strtod and strtol but not strtoul. -Other vendors that do suply strtoul parse "-1" as a valid value. +Note: Some vendors supply strtod() and strtol() but not strtoul(). +Other vendors that do supply strtoul() parse "-1" as a valid value. =item strxfrm @@ -1140,6 +1329,11 @@ String transformation. Returns the transformed string. $dst = POSIX::strxfrm( $src ); +Used in conjunction with the C function, see L. + +Not really needed since Perl can do this transparently, see +L. + =item sysconf Retrieves values of system configurable variables. @@ -1152,53 +1346,66 @@ Returns C on failure. =item system -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, see +L. =item tan -This is identical to the C function C. +This is identical to the C function C, returning the +tangent of the numerical argument. =item tanh -This is identical to the C function C. +This is identical to the C function C, returning the +hyperbolic tangent of the numerical argument. =item tcdrain -This is similar to the C function C. +This is similar to the C function C for draining +the output queue of its argument stream. Returns C on failure. =item tcflow -This is similar to the C function C. +This is similar to the C function C for controlling +the flow of its argument stream. Returns C on failure. =item tcflush -This is similar to the C function C. +This is similar to the C function C for flushing +the I/O buffers of its argumeny stream. Returns C on failure. =item tcgetpgrp -This is identical to the C function C. +This is identical to the C function C for returning the +process group identifier of the foreground process group of the controlling +terminal. =item tcsendbreak -This is similar to the C function C. +This is similar to the C function C for sending +a break on its argument stream. Returns C on failure. =item tcsetpgrp -This is similar to the C function C. +This is similar to the C function C for setting the +process group identifier of the foreground process group of the controlling +terminal. Returns C on failure. =item time -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for returning the number of seconds since the epoch +(whatever it is for the system), see L. =item times @@ -1214,7 +1421,7 @@ seconds. =item tmpfile -Use method C instead. +Use method C instead, or see L. =item tmpnam @@ -1222,17 +1429,26 @@ Returns a name for a temporary file. $tmpfile = POSIX::tmpnam(); +See also L. + =item tolower -This is identical to Perl's builtin C function. +This is identical to the C function, except that it can apply to a single +character or to a whole string. Consider using the C function, +see L, or the equivalent C<\L> operator inside doublequotish +strings. =item toupper -This is identical to Perl's builtin C function. +This is identical to the C function, except that it can apply to a single +character or to a whole string. Consider using the C function, +see L, or the equivalent C<\U> operator inside doublequotish +strings. =item ttyname -This is identical to the C function C. +This is identical to the C function C for returning the +name of the current terminal. =item tzname @@ -1243,17 +1459,31 @@ Retrieves the time conversion information from the C variable. =item tzset -This is identical to the C function C. +This is identical to the C function C for setting +the current timezone based on the environment variable C, +to be used by C, C, C, and C +functions. =item umask -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for setting (and querying) the file creation permission mask, +see L. =item uname Get name of current operating system. - ($sysname, $nodename, $release, $version, $machine ) = POSIX::uname(); + ($sysname, $nodename, $release, $version, $machine) = POSIX::uname(); + +Note that the actual meanings of the various fields are not +that well standardized, do not expect any great portability. +The C<$sysname> might be the name of the operating system, +the C<$nodename> might be the name of the host, the C<$release> +might be the (major) release number of the operating system, +the C<$version> might be the (minor) release number of the +operating system, and the C<$machine> might be a hardware identifier. +Maybe. =item ungetc @@ -1261,32 +1491,36 @@ Use method C instead. =item unlink -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for removing files, see L. =item utime -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function +for changing the time stamps of files and directories, +see L. =item vfprintf -vfprintf() is C-specific. +vfprintf() is C-specific, see L instead. =item vprintf -vprintf() is C-specific. +vprintf() is C-specific, see L instead. =item vsprintf -vsprintf() is C-specific. +vsprintf() is C-specific, see L instead. =item wait -This is identical to Perl's builtin C function. +This is identical to Perl's builtin C function, +see L. =item waitpid Wait for a child process to change state. This is identical to Perl's -builtin C function. +builtin C function, see L. $pid = POSIX::waitpid( -1, &POSIX::WNOHANG ); print "status = ", ($? / 256), "\n"; @@ -1294,10 +1528,16 @@ builtin C function. =item wcstombs This is identical to the C function C. +Perl does not have any support for the wide and multibyte +characters of the C standards, so this might be a rather +useless function. =item wctomb This is identical to the C function C. +Perl does not have any support for the wide and multibyte +characters of the C standards, so this might be a rather +useless function. =item write @@ -1310,6 +1550,8 @@ calling C. Returns C on failure. +See also L. + =back =head1 CLASSES @@ -1733,7 +1975,3 @@ WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG =back -=head1 CREATION - -This document generated by ./mkposixman.PL version 19960129. - diff --git a/global.sym b/global.sym index 9053446..719e50a 100644 --- a/global.sym +++ b/global.sym @@ -480,6 +480,7 @@ Perl_safexfree Perl_GetVars Perl_runops_standard Perl_runops_debug +Perl_sv_lock Perl_sv_catpvf_mg Perl_sv_vcatpvf_mg Perl_sv_catpv_mg @@ -542,4 +543,3 @@ Perl_ptr_table_fetch Perl_ptr_table_store Perl_ptr_table_split Perl_sys_intern_clear -Perl_sys_intern_init diff --git a/gv.c b/gv.c index e24fc45..f18f174 100644 --- a/gv.c +++ b/gv.c @@ -438,14 +438,14 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method) ENTER; #ifdef USE_THREADS - Perl_lock(aTHX_ (SV *)varstash); + sv_lock((SV *)varstash); #endif if (!isGV(vargv)) gv_init(vargv, varstash, autoload, autolen, FALSE); LEAVE; varsv = GvSV(vargv); #ifdef USE_THREADS - Perl_lock(aTHX_ varsv); + sv_lock(varsv); #endif sv_setpv(varsv, HvNAME(stash)); sv_catpvn(varsv, "::", 2); diff --git a/lib/CGI/Util.pm b/lib/CGI/Util.pm index 0a5c48b..cb6dd8a 100644 --- a/lib/CGI/Util.pm +++ b/lib/CGI/Util.pm @@ -1,5 +1,13 @@ package CGI::Util; +=pod + +=head1 NAME + +CGI::Util - various utilities + +=cut + use strict; use vars '$VERSION','@EXPORT_OK','@ISA','$EBCDIC','@A2E'; require Exporter; diff --git a/pod/Win32.pod b/lib/Win32.pod similarity index 100% rename from pod/Win32.pod rename to lib/Win32.pod diff --git a/lib/lib.pm.PL b/lib/lib_pm.PL similarity index 99% rename from lib/lib.pm.PL rename to lib/lib_pm.PL index 1b5efa0..0d2a73b 100644 --- a/lib/lib.pm.PL +++ b/lib/lib_pm.PL @@ -6,6 +6,7 @@ use Cwd; my $origdir = cwd; chdir dirname($0); my $file = basename($0, '.PL'); +$file =~ s!_(pm)$!.$1!i; my $Config_archname = defined($Config{'archname'}) ? $Config{'archname'} : ''; my $Config_ver = defined($Config{'version'}) ? $Config{'version'} : ''; diff --git a/lib/warnings/register.pm b/lib/warnings/register.pm index da6be97..f98075a 100644 --- a/lib/warnings/register.pm +++ b/lib/warnings/register.pm @@ -1,5 +1,13 @@ package warnings::register ; +=pod + +=head1 NAME + +warnings::register - warnings import function + +=cut + require warnings ; sub mkMask diff --git a/makedef.pl b/makedef.pl index 108993c..a02a298 100644 --- a/makedef.pl +++ b/makedef.pl @@ -421,7 +421,7 @@ unless ($define{'USE_5005THREADS'}) { Perl_find_threadsv Perl_unlock_condpair Perl_magic_mutexfree - Perl_lock + Perl_sv_lock )]; } diff --git a/objXSUB.h b/objXSUB.h index 4f51cb8..0209fd3 100644 --- a/objXSUB.h +++ b/objXSUB.h @@ -1954,6 +1954,12 @@ #define Perl_runops_debug pPerl->Perl_runops_debug #undef runops_debug #define runops_debug Perl_runops_debug +#if defined(USE_THREADS) +#undef Perl_sv_lock +#define Perl_sv_lock pPerl->Perl_sv_lock +#undef sv_lock +#define sv_lock Perl_sv_lock +#endif #undef Perl_sv_catpvf_mg #define Perl_sv_catpvf_mg pPerl->Perl_sv_catpvf_mg #undef sv_catpvf_mg @@ -2277,10 +2283,6 @@ # if defined(LEAKTEST) # endif #endif -#undef Perl_lock -#define Perl_lock pPerl->Perl_lock -#undef lock -#define lock Perl_lock #if defined(PERL_OBJECT) #endif diff --git a/perlapi.c b/perlapi.c index 29d669a..6a54b94 100644 --- a/perlapi.c +++ b/perlapi.c @@ -3533,6 +3533,15 @@ Perl_runops_debug(pTHXo) { return ((CPerlObj*)pPerl)->Perl_runops_debug(); } +#if defined(USE_THREADS) + +#undef Perl_sv_lock +SV* +Perl_sv_lock(pTHXo_ SV *sv) +{ + return ((CPerlObj*)pPerl)->Perl_sv_lock(sv); +} +#endif #undef Perl_sv_catpvf_mg void diff --git a/pod/Makefile b/pod/Makefile deleted file mode 100644 index a6f4efb..0000000 --- a/pod/Makefile +++ /dev/null @@ -1,401 +0,0 @@ -CONVERTERS = pod2html pod2latex pod2man pod2text checkpods \ - pod2usage podchecker podselect - -HTMLROOT = / # Change this to fix cross-references in HTML -POD2HTML = pod2html \ - --htmlroot=$(HTMLROOT) \ - --podroot=.. --podpath=pod:lib:ext:vms \ - --libpods=perlfunc:perlguts:perlvar:perlrun:perlop - -all: $(CONVERTERS) man - -converters: $(CONVERTERS) - -PERL = ../miniperl -REALPERL = ../perl - -POD = \ - perl.pod \ - perl5004delta.pod \ - perl5005delta.pod \ - perl56delta.pod \ - perlapi.pod \ - perlapio.pod \ - perlbook.pod \ - perlboot.pod \ - perlbot.pod \ - perlcall.pod \ - perlcompile.pod \ - perldata.pod \ - perldbmfilter.pod \ - perldebguts.pod \ - perldebug.pod \ - perldelta.pod \ - perldiag.pod \ - perldsc.pod \ - perlembed.pod \ - perlfaq.pod \ - perlfaq1.pod \ - perlfaq2.pod \ - perlfaq3.pod \ - perlfaq4.pod \ - perlfaq5.pod \ - perlfaq6.pod \ - perlfaq7.pod \ - perlfaq8.pod \ - perlfaq9.pod \ - perlfilter.pod \ - perlfork.pod \ - perlform.pod \ - perlfunc.pod \ - perlguts.pod \ - perlhack.pod \ - perlhist.pod \ - perlintern.pod \ - perlipc.pod \ - perllexwarn.pod \ - perllocale.pod \ - perllol.pod \ - perlmod.pod \ - perlmodinstall.pod \ - perlmodlib.pod \ - perlnewmod.pod \ - perlnumber.pod \ - perlobj.pod \ - perlop.pod \ - perlopentut.pod \ - perlpod.pod \ - perlport.pod \ - perlre.pod \ - perlref.pod \ - perlreftut.pod \ - perlrequick.pod \ - perlretut.pod \ - perlrun.pod \ - perlsec.pod \ - perlstyle.pod \ - perlsub.pod \ - perlsyn.pod \ - perlthrtut.pod \ - perltie.pod \ - perltoc.pod \ - perltodo.pod \ - perltoot.pod \ - perltootc.pod \ - perltrap.pod \ - perlunicode.pod \ - perlutil.pod \ - perlvar.pod \ - perlxs.pod \ - perlxstut.pod - -MAN = \ - perl.man \ - perl5004delta.man \ - perl5005delta.man \ - perl56delta.man \ - perlapi.man \ - perlapio.man \ - perlbook.man \ - perlboot.man \ - perlbot.man \ - perlcall.man \ - perlcompile.man \ - perldata.man \ - perldbmfilter.man \ - perldebguts.man \ - perldebug.man \ - perldelta.man \ - perldiag.man \ - perldsc.man \ - perlembed.man \ - perlfaq.man \ - perlfaq1.man \ - perlfaq2.man \ - perlfaq3.man \ - perlfaq4.man \ - perlfaq5.man \ - perlfaq6.man \ - perlfaq7.man \ - perlfaq8.man \ - perlfaq9.man \ - perlfilter.man \ - perlfork.man \ - perlform.man \ - perlfunc.man \ - perlguts.man \ - perlhack.man \ - perlhist.man \ - perlintern.man \ - perlipc.man \ - perllexwarn.man \ - perllocale.man \ - perllol.man \ - perlmod.man \ - perlmodinstall.man \ - perlmodlib.man \ - perlnewmod.man \ - perlnumber.man \ - perlobj.man \ - perlop.man \ - perlopentut.man \ - perlpod.man \ - perlport.man \ - perlre.man \ - perlref.man \ - perlreftut.man \ - perlrequick.man \ - perlretut.man \ - perlrun.man \ - perlsec.man \ - perlstyle.man \ - perlsub.man \ - perlsyn.man \ - perlthrtut.man \ - perltie.man \ - perltoc.man \ - perltodo.man \ - perltoot.man \ - perltootc.man \ - perltrap.man \ - perlunicode.man \ - perlutil.man \ - perlvar.man \ - perlxs.man \ - perlxstut.man - -HTML = \ - perl.html \ - perl5004delta.html \ - perl5005delta.html \ - perl56delta.html \ - perlapi.html \ - perlapio.html \ - perlbook.html \ - perlboot.html \ - perlbot.html \ - perlcall.html \ - perlcompile.html \ - perldata.html \ - perldbmfilter.html \ - perldebguts.html \ - perldebug.html \ - perldelta.html \ - perldiag.html \ - perldsc.html \ - perlembed.html \ - perlfaq.html \ - perlfaq1.html \ - perlfaq2.html \ - perlfaq3.html \ - perlfaq4.html \ - perlfaq5.html \ - perlfaq6.html \ - perlfaq7.html \ - perlfaq8.html \ - perlfaq9.html \ - perlfilter.html \ - perlfork.html \ - perlform.html \ - perlfunc.html \ - perlguts.html \ - perlhack.html \ - perlhist.html \ - perlintern.html \ - perlipc.html \ - perllexwarn.html \ - perllocale.html \ - perllol.html \ - perlmod.html \ - perlmodinstall.html \ - perlmodlib.html \ - perlnewmod.html \ - perlnumber.html \ - perlobj.html \ - perlop.html \ - perlopentut.html \ - perlpod.html \ - perlport.html \ - perlre.html \ - perlref.html \ - perlreftut.html \ - perlrequick.html \ - perlretut.html \ - perlrun.html \ - perlsec.html \ - perlstyle.html \ - perlsub.html \ - perlsyn.html \ - perlthrtut.html \ - perltie.html \ - perltodo.html \ - perltoot.html \ - perltootc.html \ - perltrap.html \ - perlunicode.html \ - perlutil.html \ - perlvar.html \ - perlxs.html \ - perlxstut.html - -# not perltoc.html - -TEX = \ - perl.tex \ - perl5004delta.tex \ - perl5005delta.tex \ - perl56delta.tex \ - perlapi.tex \ - perlapio.tex \ - perlbook.tex \ - perlboot.tex \ - perlbot.tex \ - perlcall.tex \ - perlcompile.tex \ - perldata.tex \ - perldbmfilter.tex \ - perldebguts.tex \ - perldebug.tex \ - perldelta.tex \ - perldiag.tex \ - perldsc.tex \ - perlembed.tex \ - perlfaq.tex \ - perlfaq1.tex \ - perlfaq2.tex \ - perlfaq3.tex \ - perlfaq4.tex \ - perlfaq5.tex \ - perlfaq6.tex \ - perlfaq7.tex \ - perlfaq8.tex \ - perlfaq9.tex \ - perlfilter.tex \ - perlfork.tex \ - perlform.tex \ - perlfunc.tex \ - perlguts.tex \ - perlhack.tex \ - perlhist.tex \ - perlintern.tex \ - perlipc.tex \ - perllexwarn.tex \ - perllocale.tex \ - perllol.tex \ - perlmod.tex \ - perlmodinstall.tex \ - perlmodlib.tex \ - perlnewmod.tex \ - perlnumber.tex \ - perlobj.tex \ - perlop.tex \ - perlopentut.tex \ - perlpod.tex \ - perlport.tex \ - perlre.tex \ - perlref.tex \ - perlreftut.tex \ - perlrequick.tex \ - perlretut.tex \ - perlrun.tex \ - perlsec.tex \ - perlstyle.tex \ - perlsub.tex \ - perlsyn.tex \ - perlthrtut.tex \ - perltie.tex \ - perltoc.tex \ - perltodo.tex \ - perltoot.tex \ - perltootc.tex \ - perltrap.tex \ - perlunicode.tex \ - perlutil.tex \ - perlvar.tex \ - perlxs.tex \ - perlxstut.tex - -man: pod2man $(MAN) - -html: pod2html $(HTML) - -tex: pod2latex $(TEX) - -toc: - $(PERL) -I../lib buildtoc >perltoc.pod - -.SUFFIXES: .pm .pod - -.SUFFIXES: .man - -.pm.man: pod2man - $(PERL) -I../lib pod2man $*.pm >$*.man - -.pod.man: pod2man - $(PERL) -I../lib pod2man $*.pod >$*.man - -.SUFFIXES: .html - -.pm.html: pod2html - $(PERL) -I../lib $(POD2HTML) --infile=$*.pm --outfile=$*.html - -.pod.html: pod2html - $(PERL) -I../lib $(POD2HTML) --infile=$*.pod --outfile=$*.html - -.SUFFIXES: .tex - -.pm.tex: pod2latex - $(PERL) -I../lib pod2latex $*.pm - -.pod.tex: pod2latex - $(PERL) -I../lib pod2latex $*.pod - -clean: - rm -f $(MAN) - rm -f $(HTML) - rm -f $(TEX) - rm -f pod2html-*cache - rm -f *.aux *.log *.exe - -realclean: clean - rm -f $(CONVERTERS) - -distclean: realclean - -check: checkpods - @echo "checking..."; \ - $(PERL) -I../lib checkpods $(POD) - -# Dependencies. -pod2latex: pod2latex.PL ../lib/Config.pm - $(PERL) -I../lib pod2latex.PL - -pod2html: pod2html.PL ../lib/Config.pm - $(PERL) -I ../lib pod2html.PL - -pod2man: pod2man.PL ../lib/Config.pm - $(PERL) -I ../lib pod2man.PL - -pod2text: pod2text.PL ../lib/Config.pm - $(PERL) -I ../lib pod2text.PL - -checkpods: checkpods.PL ../lib/Config.pm - $(PERL) -I ../lib checkpods.PL - -pod2usage: pod2usage.PL ../lib/Config.pm - $(PERL) -I ../lib pod2usage.PL - -podchecker: podchecker.PL ../lib/Config.pm - $(PERL) -I ../lib podchecker.PL - -podselect: podselect.PL ../lib/Config.pm - $(PERL) -I ../lib podselect.PL - -perlmodlib.pod: $(PERL) perlmodlib.PL ../mv-if-diff - rm -f perlmodlib.tmp - $(PERL) -I ../lib perlmodlib.PL - sh ../mv-if-diff perlmodlib.tmp perlmodlib.pod - -compile: all - $(REALPERL) -I../lib ../utils/perlcc -regex 's/$$/.exe/' pod2latex pod2man pod2text checkpods -prog -verbose dcf -log ../compilelog; - diff --git a/pod/Makefile.SH b/pod/Makefile.SH new file mode 100644 index 0000000..17ba91a --- /dev/null +++ b/pod/Makefile.SH @@ -0,0 +1,158 @@ +case $CONFIG in +'') + if test -f config.sh; then TOP=.; + elif test -f ../config.sh; then TOP=..; + elif test -f ../../config.sh; then TOP=../..; + elif test -f ../../../config.sh; then TOP=../../..; + elif test -f ../../../../config.sh; then TOP=../../../..; + else + echo "Can't find config.sh."; exit 1 + fi + . $TOP/config.sh + ;; +esac +: This forces SH files to create target in same directory as SH file. +: This is so that make depend always knows where to find SH derivatives. +case "$0" in +*/*) cd `expr X$0 : 'X\(.*\)/'` ;; +esac + +if test -d pod; then + cd pod || exit 1 +fi +POD=`echo *.pod` +MAN=`echo $POD|sed 's/\.pod/\.man/g'` +HTML=`echo $POD|sed 's/perltoc.pod//'|sed 's/\.pod/\.man/g'` +TEX=`echo $POD|sed 's/\.pod/\.tex/g'` + +echo "Extracting pod/Makefile (with variable substitutions)" +: This section of the file will have variable substitutions done on it. +: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. +: Protect any dollar signs and backticks that you do not want interpreted +: by putting a backslash in front. You may delete these comments. + +$spitshell >Makefile <>Makefile <<'!NO!SUBS!' + +CONVERTERS = pod2html pod2latex pod2man pod2text checkpods \ + pod2usage podchecker podselect + +HTMLROOT = / # Change this to fix cross-references in HTML +POD2HTML = pod2html \ + --htmlroot=$(HTMLROOT) \ + --podroot=.. --podpath=pod:lib:ext:vms \ + --libpods=perlfunc:perlguts:perlvar:perlrun:perlop + +PERL = ../miniperl +REALPERL = ../perl + +all: $(CONVERTERS) man + +converters: $(CONVERTERS) + +regen_pods: perlmodlib.pod toc + +buildtoc: buildtoc.PL + $(PERL) -I ../lib buildtoc.PL + +man: pod2man $(MAN) + +html: pod2html $(HTML) + +tex: pod2latex $(TEX) + +toc: + $(PERL) -I../lib buildtoc + +.SUFFIXES: .pm .pod + +.SUFFIXES: .man + +.pm.man: pod2man + $(PERL) -I../lib pod2man $*.pm >$*.man + +.pod.man: pod2man + $(PERL) -I../lib pod2man $*.pod >$*.man + +.SUFFIXES: .html + +.pm.html: pod2html + $(PERL) -I../lib $(POD2HTML) --infile=$*.pm --outfile=$*.html + +.pod.html: pod2html + $(PERL) -I../lib $(POD2HTML) --infile=$*.pod --outfile=$*.html + +.SUFFIXES: .tex + +.pm.tex: pod2latex + $(PERL) -I../lib pod2latex $*.pm + +.pod.tex: pod2latex + $(PERL) -I../lib pod2latex $*.pod + +clean: + rm -f $(MAN) + rm -f $(HTML) + rm -f $(TEX) + rm -f pod2html-*cache + rm -f *.aux *.log *.exe + +realclean: clean + rm -f $(CONVERTERS) + +distclean: realclean + +check: checkpods + @echo "checking..."; \ + $(PERL) -I../lib checkpods $(POD) + +# Dependencies. +pod2latex: pod2latex.PL ../lib/Config.pm + $(PERL) -I../lib pod2latex.PL + +pod2html: pod2html.PL ../lib/Config.pm + $(PERL) -I ../lib pod2html.PL + +pod2man: pod2man.PL ../lib/Config.pm + $(PERL) -I ../lib pod2man.PL + +pod2text: pod2text.PL ../lib/Config.pm + $(PERL) -I ../lib pod2text.PL + +checkpods: checkpods.PL ../lib/Config.pm + $(PERL) -I ../lib checkpods.PL + +pod2usage: pod2usage.PL ../lib/Config.pm + $(PERL) -I ../lib pod2usage.PL + +podchecker: podchecker.PL ../lib/Config.pm + $(PERL) -I ../lib podchecker.PL + +podselect: podselect.PL ../lib/Config.pm + $(PERL) -I ../lib podselect.PL + +perlmodlib.pod: $(PERL) perlmodlib.PL ../mv-if-diff + rm -f perlmodlib.tmp + $(PERL) -I ../lib perlmodlib.PL + sh ../mv-if-diff perlmodlib.tmp perlmodlib.pod + +compile: all + $(REALPERL) -I../lib ../utils/perlcc -regex 's/$$/.exe/' pod2latex pod2man pod2text checkpods -prog -verbose dcf -log ../compilelog; + +!NO!SUBS! diff --git a/pod/buildtoc b/pod/buildtoc deleted file mode 100644 index 58bfc54..0000000 --- a/pod/buildtoc +++ /dev/null @@ -1,259 +0,0 @@ -use File::Find; -use Cwd; -use Text::Wrap; - -sub output ($); - -@pods = qw( - perl perlfaq perlfaq1 perlfaq2 perlfaq3 perlfaq4 perlfaq5 - perlfaq6 perlfaq7 perlfaq8 perlfaq9 perldelta perldata - perlsyn perlop perlre perlrun perlfunc perlvar perlsub - perlmod perlmodlib perlmodinstall perlfork perlform perllocale - perlref perlreftut perldsc - perllol perlboot perltoot perltootc perlobj perltie perlbot perlipc - perldbmfilter perldebug perlnumber perldebguts - perldiag perlsec perltrap perlport perlstyle perlpod perlbook - perlembed perlapio perlxs perlxstut perlguts perlcall perlcompile - perlapi perlintern perlhist - ); - -for (@pods) { s/$/.pod/ } - -$/ = ''; -@ARGV = @pods; - -($_= < qw(../lib ../ext); - -sub getpods { - if (/\.p(od|m)$/) { - # Skip .pm files that have corresponding .pod files, and Functions.pm. - return if /(.*)\.pm$/ && -f "$1.pod"; - my $file = $File::Find::name; - return if $file eq '../lib/Pod/Functions.pm'; # Used only by pod itself - - die "tut $name" if $file =~ /TUT/; - unless (open (F, "< $_\0")) { - warn "bogus <$file>: $!"; - system "ls", "-l", $file; - } - else { - my $line; - while ($line = ) { - if ($line =~ /^=head1\s+NAME\b/) { - push @modpods, $file; - #warn "GOOD $file\n"; - return; - } - } - warn "EVIL $file\n"; - } - } -} - -die "no pods" unless @modpods; - -for (@modpods) { - #($name) = /(\w+)\.p(m|od)$/; - $name = path2modname($_); - if ($name =~ /^[a-z]/) { - push @pragmata, $_; - } else { - if ($done{$name}++) { - # warn "already did $_\n"; - next; - } - push @modules, $_; - push @modname, $name; - } -} - -($_= <>, with the help of oodles - of other folks. - - -EOPOD2B -output $_; -output "\n"; # flush $LINE -exit; - -sub podset { - local @ARGV = @_; - - while(<>) { - if (s/^=head1 (NAME)\s*/=head2 /) { - $pod = path2modname($ARGV); - unhead1(); - output "\n \n\n=head2 "; - $_ = <>; - if ( /^\s*$pod\b/ ) { - s/$pod\.pm/$pod/; # '.pm' in NAME !? - output $_; - } else { - s/^/$pod, /; - output $_; - } - next; - } - if (s/^=head1 (.*)/=item $1/) { - unhead2(); - output "=over\n\n" unless $inhead1; - $inhead1 = 1; - output $_; nl(); next; - } - if (s/^=head2 (.*)/=item $1/) { - unitem(); - output "=over\n\n" unless $inhead2; - $inhead2 = 1; - output $_; nl(); next; - } - if (s/^=item ([^=].*)/$1/) { - next if $pod eq 'perldiag'; - s/^\s*\*\s*$// && next; - s/^\s*\*\s*//; - s/\n/ /g; - s/\s+$//; - next if /^[\d.]+$/; - next if $pod eq 'perlmodlib' && /^ftp:/; - ##print "=over\n\n" unless $initem; - output ", " if $initem; - $initem = 1; - s/\.$//; - s/^-X\b/-I/; - output $_; next; - } - if (s/^=cut\s*\n//) { - unhead1(); - next; - } - } -} - -sub path2modname { - local $_ = shift; - s/\.p(m|od)$//; - s-.*?/(lib|ext)/--; - s-/-::-g; - s/(\w+)::\1/$1/; - return $_; -} - -sub unhead1 { - unhead2(); - if ($inhead1) { - output "\n\n=back\n\n"; - } - $inhead1 = 0; -} - -sub unhead2 { - unitem(); - if ($inhead2) { - output "\n\n=back\n\n"; - } - $inhead2 = 0; -} - -sub unitem { - if ($initem) { - output "\n\n"; - ##print "\n\n=back\n\n"; - } - $initem = 0; -} - -sub nl { - output "\n"; -} - -my $NEWLINE; # how many newlines have we seen recently -my $LINE; # what remains to be printed - -sub output ($) { - for (split /(\n)/, shift) { - if ($_ eq "\n") { - if ($LINE) { - print wrap('', '', $LINE); - $LINE = ''; - } - if ($NEWLINE < 2) { - print; - $NEWLINE++; - } - } - elsif (/\S/ && length) { - $LINE .= $_; - $NEWLINE = 0; - } - } -} diff --git a/pod/buildtoc.PL b/pod/buildtoc.PL new file mode 100644 index 0000000..8e07ce8 --- /dev/null +++ b/pod/buildtoc.PL @@ -0,0 +1,467 @@ +#!/usr/local/bin/perl + +use Config; +use File::Basename qw(&basename &dirname); +use Cwd; + +# List explicitly here the variables you want Configure to +# generate. Metaconfig only looks for shell variables, so you +# have to mention them as if they were shell variables, not +# %Config entries. Thus you write +# $startperl +# to ensure Configure will look for $Config{startperl}. + +# This forces PL files to create target in same directory as PL file. +# This is so that make depend always knows where to find PL derivatives. +$origdir = cwd; +chdir(dirname($0)); +($file = basename($0)) =~ s/\.PL$//; +$file =~ s/\.pl$// if ($^O eq 'os2' or $^O eq 'dos'); # "case-forgiving" +$file =~ s/\.pl$/.com/ if ($^O eq 'VMS'); # "case-forgiving" + +open OUT,">$file" or die "Can't create $file: $!"; + +print "Extracting $file (with variable substitutions)\n"; + +# In this section, perl variables will be expanded during extraction. +# You can use $Config{...} to use Configure variables. + +print OUT <<"!GROK!THIS!"; +$Config{'startperl'} + eval 'exec perl -S \$0 "\$@"' + if 0; +!GROK!THIS! + +# In the following, perl variables are not expanded during extraction. + +print OUT <<'!NO!SUBS!'; + +# +# buildtoc +# +# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! +# This file is autogenerated by buildtoc.PL. +# Edit that file and run it to effect changes. +# +# Builds perltoc.pod and sanity checks the list of pods against all +# of the MANIFEST, perl.pod, and ourselves. +# + +use File::Find; +use Cwd; +use Text::Wrap; + +@PODS = glob("*.pod"); + +sub output ($); + +if (-d "pod") { + die "$0: failed to chdir('pod'): $!\n" unless chdir("pod"); +} + +@pods = qw( + perl + perlfaq + perltoc + perlbook + + perlsyn + perldata + perlop + perlreftut + perldsc + perllol + perlrequick + perlretut + + perllexwarn + perldebug + + perlrun + perlfunc + perlopentut + perlvar + perlsub + perlmod + perlpod + + perlstyle + perlmodlib + perlmodinstall + perlnewmod + perltrap + perlport + perlsec + + perlref + perlre + perlform + perllocale + perlunicode + + perlboot + perltoot + perltootc + perlobj + perlbot + perltie + + perlipc + perlnumber + perlfork + perlthrtut + + perldiag + perlfaq1 + perlfaq2 + perlfaq3 + perlfaq4 + perlfaq5 + perlfaq6 + perlfaq7 + perlfaq8 + perlfaq9 + + perlcompile + + perlembed + perldebguts + perlxstut + perlxs + perlguts + perlcall + perlutil + perlfilter + perldbmfilter + perlapi + perlintern + perlapio + perltodo + perlhack + + perlhist + perldelta + perl56delta + perl5005delta + perl5004delta + + perlamiga + perlcygwin + perldos + perlhpux + perlmachten + perlos2 + perlos390 + perlvms + perlwin32 + ); + +@ARCHPODS = qw( + perlamiga + perlcygwin + perldos + perlhpux + perlmachten + perlos2 + perlos390 + perlvms + perlwin32 + ); +for (@ARCHPODS) { s/$/.pod/ } +@ARCHPODS{@ARCHPODS} = (); + +for (@pods) { s/$/.pod/ } +@pods{@pods} = (); +@PODS{@PODS} = (); + +open(MANI, "../MANIFEST") || die "$0: opening ../MANIFEST failed: $!"; +while () { + if (m!^pod/([^.]+\.pod)\s+!i) { + push @MANIPODS, $1; + } +} +close(MANI); +@MANIPODS{@MANIPODS} = (); + +open(PERLPOD, "perl.pod") || die "$0: opening perl.pod failed: $!\n"; +while () { + if (/^For ease of access, /../^\(If you're intending /) { + if (/^\s+(perl\w*)\s+\w/) { + push @PERLPODS, "$1.pod"; + } + } +} +close(PERLPOD); +die "$0: could not find the pod listing of perl.pod\n" + unless @PERLPODS; +@PERLPODS{@PERLPODS} = (); + +# Cross-check against ourselves +# Cross-check against the MANIFEST +# Cross-check against the perl.pod + +foreach my $i (sort keys %PODS) { + warn "$0: $i exists but is unknown by buildtoc\n" + unless exists $pods{$i}; + warn "$0: $i exists but is unknown by ../MANIFEST\n" + if !exists $MANIPODS{$i} && !exists $ARCHPODS{$i}; + warn "$0: $i exists but is unknown by perl.pod\n" + unless exists $PERLPODS{$i}; +} +foreach my $i (sort keys %pods) { + warn "$0: $i is known by buildtoc but does not exist\n" + unless exists $PODS{$i}; +} +foreach my $i (sort keys %MANIPODS) { + warn "$0: $i is known by ../MANIFEST but does not exist\n" + unless exists $PODS{$i}; +} +foreach my $i (sort keys %PERLPODS) { + warn "$0: $i is known by perl.pod but does not exist\n" + unless exists $PODS{$i}; +} + +# We are ready to rock. +open(OUT, ">perltoc.pod") || die "$0: creating perltoc.pod failed: $!"; + +$/ = ''; +@ARGV = @pods; + +($_= < qw(../lib ../ext); + +sub getpods { + if (/\.p(od|m)$/) { + # Skip .pm files that have corresponding .pod files, and Functions.pm. + return if /(.*)\.pm$/ && -f "$1.pod"; + my $file = $File::Find::name; + return if $file eq '../lib/Pod/Functions.pm'; # Used only by pod itself + + die "tut $name" if $file =~ /TUT/; + unless (open (F, "< $_\0")) { + warn "bogus <$file>: $!"; + system "ls", "-l", $file; + } + else { + my $line; + while ($line = ) { + if ($line =~ /^=head1\s+NAME\b/) { + push @modpods, $file; + #warn "GOOD $file\n"; + return; + } + } + warn "$0: $file: cannot find =head1 NAME\n"; + } + } +} + +die "no pods" unless @modpods; + +for (@modpods) { + #($name) = /(\w+)\.p(m|od)$/; + $name = path2modname($_); + if ($name =~ /^[a-z]/) { + push @pragmata, $_; + } else { + if ($done{$name}++) { + # warn "already did $_\n"; + next; + } + push @modules, $_; + push @modname, $name; + } +} + +($_= <>, with the help of oodles + of other folks. + + +EOPOD2B +output $_; +output "\n"; # flush $LINE +exit; + +sub podset { + local @ARGV = @_; + + while(<>) { + if (s/^=head1 (NAME)\s*/=head2 /) { + $pod = path2modname($ARGV); + unhead1(); + output "\n \n\n=head2 "; + $_ = <>; + if ( /^\s*$pod\b/ ) { + s/$pod\.pm/$pod/; # '.pm' in NAME !? + output $_; + } else { + s/^/$pod, /; + output $_; + } + next; + } + if (s/^=head1 (.*)/=item $1/) { + unhead2(); + output "=over\n\n" unless $inhead1; + $inhead1 = 1; + output $_; nl(); next; + } + if (s/^=head2 (.*)/=item $1/) { + unitem(); + output "=over\n\n" unless $inhead2; + $inhead2 = 1; + output $_; nl(); next; + } + if (s/^=item ([^=].*)/$1/) { + next if $pod eq 'perldiag'; + s/^\s*\*\s*$// && next; + s/^\s*\*\s*//; + s/\n/ /g; + s/\s+$//; + next if /^[\d.]+$/; + next if $pod eq 'perlmodlib' && /^ftp:/; + ##print "=over\n\n" unless $initem; + output ", " if $initem; + $initem = 1; + s/\.$//; + s/^-X\b/-I/; + output $_; next; + } + if (s/^=cut\s*\n//) { + unhead1(); + next; + } + } +} + +sub path2modname { + local $_ = shift; + s/\.p(m|od)$//; + s-.*?/(lib|ext)/--; + s-/-::-g; + s/(\w+)::\1/$1/; + return $_; +} + +sub unhead1 { + unhead2(); + if ($inhead1) { + output "\n\n=back\n\n"; + } + $inhead1 = 0; +} + +sub unhead2 { + unitem(); + if ($inhead2) { + output "\n\n=back\n\n"; + } + $inhead2 = 0; +} + +sub unitem { + if ($initem) { + output "\n\n"; + ##print "\n\n=back\n\n"; + } + $initem = 0; +} + +sub nl { + output "\n"; +} + +my $NEWLINE; # how many newlines have we seen recently +my $LINE; # what remains to be printed + +sub output ($) { + for (split /(\n)/, shift) { + if ($_ eq "\n") { + if ($LINE) { + print OUT wrap('', '', $LINE); + $LINE = ''; + } + if ($NEWLINE < 2) { + print OUT; + $NEWLINE++; + } + } + elsif (/\S/ && length) { + $LINE .= $_; + $NEWLINE = 0; + } + } +} + +!NO!SUBS! + diff --git a/pod/perl.pod b/pod/perl.pod index 49fdbf2..ce0d1b4 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -12,76 +12,92 @@ B S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I] ]> S<[ B<-i>[I] ]> S<[ B<-e> I<'command'> ] [ B<--> ] [ I ] [ I ]...> -For ease of access, the Perl manual has been split up into several -sections: +For ease of access, the Perl manual has been split up into several sections: perl Perl overview (this section) - perldelta Perl changes since previous version - perl5005delta Perl changes in version 5.005 - perl5004delta Perl changes in version 5.004 perlfaq Perl frequently asked questions perltoc Perl documentation table of contents + perlbook Perl book information - perldata Perl data structures perlsyn Perl syntax + perldata Perl data structures perlop Perl operators and precedence - perlre Perl regular expressions + perlreftut Perl references short introduction + perldsc Perl data structures intro + perllol Perl data structures: arrays of arrays + perlrequick Perl regular expressions quick start + perlretut Perl regular expressions tutorial + + perllexwarn Perl warnings and their control + perldebug Perl debugging + perlrun Perl execution and options perlfunc Perl builtin functions perlopentut Perl open() tutorial perlvar Perl predefined variables perlsub Perl subroutines perlmod Perl modules: how they work + perlpod Perl plain old documentation + + perlstyle Perl style guide perlmodlib Perl modules: how to write and use perlmodinstall Perl modules: how to install from CPAN - perlnewpod Perl modules: preparing a new module for distribution + perlnewmod Perl modules: preparing a new module for distribution + perltrap Perl traps for the unwary + perlport Perl portability guide + perlsec Perl security + perlref Perl references, the rest of the story + perlre Perl regular expressions, the rest of the story perlform Perl formats - perlunicode Perl unicode support perllocale Perl locale support + perlunicode Perl unicode support - perlreftut Perl references short introduction - perlref Perl references, the rest of the story - perldsc Perl data structures intro - perllol Perl data structures: arrays of arrays perlboot Perl OO tutorial for beginners perltoot Perl OO tutorial, part 1 perltootc Perl OO tutorial, part 2 perlobj Perl objects - perltie Perl objects hidden behind simple variables perlbot Perl OO tricks and examples + perltie Perl objects hidden behind simple variables + perlipc Perl interprocess communication + perlnumber Perl number semantics perlfork Perl fork() information perlthrtut Perl threads tutorial - perllexwarn Perl warnings and their control - perlfilter Perl source filters - perldbmfilter Perl DBM filters - perlcompile Perl compiler suite intro - perldebug Perl debugging perldiag Perl diagnostic messages - perlnumber Perl number semantics - perlsec Perl security - perltrap Perl traps for the unwary - perlport Perl portability guide - perlstyle Perl style guide + perlfaq1 General Questions About Perl + perlfaq2 Obtaining and Learning about Perl + perlfaq3 Programming Tools + perlfaq4 Data Manipulation + perlfaq5 Files and Formats + perlfaq6 Regexes + perlfaq7 Perl Language Issues + perlfaq8 System Interaction + perlfaq9 Networking - perlpod Perl plain old documentation - perlbook Perl book information + perlcompile Perl compiler suite intro perlembed Perl ways to embed perl in your C or C++ application - perlapio Perl internal IO abstraction interface perldebguts Perl debugging guts and tips - perlxs Perl XS application programming interface perlxstut Perl XS tutorial + perlxs Perl XS application programming interface perlguts Perl internal functions for those doing extensions perlcall Perl calling conventions from C + perlutil utilities packaged with the Perl distribution + perlfilter Perl source filters + perldbmfilter Perl DBM filters perlapi Perl API listing (autogenerated) perlintern Perl internal functions (autogenerated) - + perlapio Perl internal IO abstraction interface perltodo Perl things to do perlhack Perl hackers guide + perlhist Perl history records + perldelta Perl changes since previous version + perl56delta Perl changes in version 5.6 + perl5005delta Perl changes in version 5.005 + perl5004delta Perl changes in version 5.004 perlamiga Perl notes for Amiga perlcygwin Perl notes for Cygwin diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 78a6318..bf59669 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -2495,13 +2495,13 @@ first to get the correct constant definitions. If CMD is C, then ARG must be a variable which will hold the returned C structure. Returns like C: the undefined value for error, C<"0 but true"> for zero, or the actual return value otherwise. See also -C and C documentation. +L, C, and C documentation. =item msgget KEY,FLAGS Calls the System V IPC function msgget(2). Returns the message queue -id, or the undefined value if there is an error. See also C -and C documentation. +id, or the undefined value if there is an error. See also +L and C and C documentation. =item msgrcv ID,VAR,SIZE,TYPE,FLAGS @@ -2511,7 +2511,8 @@ SIZE. Note that when a message is received, the message type as a native long integer will be the first thing in VAR, followed by the actual message. This packing may be opened with C. Taints the variable. Returns true if successful, or false if there is -an error. See also C and C documentation. +an error. See also L, C, and +C documentation. =item msgsnd ID,MSG,FLAGS @@ -3943,13 +3944,15 @@ semid_ds structure or semaphore value array. Returns like C: the undefined value for error, "C<0 but true>" for zero, or the actual return value otherwise. The ARG must consist of a vector of native short integers, which may be created with C. -See also C and C documentation. +See also L, C, C +documentation. =item semget KEY,NSEMS,FLAGS Calls the System V IPC function semget. Returns the semaphore id, or -the undefined value if there is an error. See also C and -C documentation. +the undefined value if there is an error. See also +L, C, C +documentation. =item semop KEY,OPSTRING @@ -3964,8 +3967,9 @@ following code waits on semaphore $semnum of semaphore id $semid: $semop = pack("sss", $semnum, -1, 0); die "Semaphore trouble: $!\n" unless semop($semid, $semop); -To signal the semaphore, replace C<-1> with C<1>. See also C -and C documentation. +To signal the semaphore, replace C<-1> with C<1>. See also +L, C, and C +documentation. =item send SOCKET,MSG,FLAGS,TO @@ -4025,13 +4029,13 @@ first to get the correct constant definitions. If CMD is C, then ARG must be a variable which will hold the returned C structure. Returns like ioctl: the undefined value for error, "C<0> but true" for zero, or the actual return value otherwise. -See also C documentation. +See also L and C documentation. =item shmget KEY,SIZE,FLAGS Calls the System V IPC function shmget. Returns the shared memory segment id, or the undefined value if there is an error. -See also C documentation. +See also L and C documentation. =item shmread ID,VAR,POS,SIZE @@ -4043,8 +4047,8 @@ detaching from it. When reading, VAR must be a variable that will hold the data read. When writing, if STRING is too long, only SIZE bytes are used; if STRING is too short, nulls are written to fill out SIZE bytes. Return true if successful, or false if there is an error. -shmread() taints the variable. See also C documentation and -the C module from CPAN. +shmread() taints the variable. See also L, +C documentation, and the C module from CPAN. =item shutdown SOCKET,HOW diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 5768081..2e23fc9 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -301,55 +301,39 @@ authors =back -=head2 perlfaq1 - General Questions About Perl ($Revision: 1.23 $, $Date: -1999/05/23 16:08:30 $) +=head2 perltoc - perl documentation table of contents =over =item DESCRIPTION -=over - -=item What is Perl? - -=item Who supports Perl? Who develops it? Why is it free? - -=item Which version of Perl should I use? - -=item What are perl4 and perl5? - -=item What is perl6? - -=item How stable is Perl? - -=item Is Perl difficult to learn? +=item BASIC DOCUMENTATION -=item How does Perl compare with other languages like Java, Python, REXX, -Scheme, or Tcl? +=over -=item Can I do [task] in Perl? +=item perl - Practical Extraction and Report Language -=item When shouldn't I program in Perl? +SYNOPSIS, DESCRIPTION, AVAILABILITY, ENVIRONMENT, AUTHOR, FILES, SEE ALSO, +DIAGNOSTICS, BUGS, NOTES -=item What's the difference between "perl" and "Perl"? +=item perlfaq - frequently asked questions about Perl ($Date: 1999/05/23 +20:38:02 $) -=item Is it a Perl program or a Perl script? +DESCRIPTION -=item What is a JAPH? +=back -=item Where can I get a list of Larry Wall witticisms? +=back -=item How can I convince my sysadmin/supervisor/employees to use version -(5/5.005/Perl instead of some other language)? +=head2 perlbook - Perl book information -=back +=over -=item AUTHOR AND COPYRIGHT +=item DESCRIPTION =back -=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.32 $, -$Date: 1999/10/14 18:46:09 $) +=head2 perlsyn - Perl syntax =over @@ -357,521 +341,2728 @@ $Date: 1999/10/14 18:46:09 $) =over -=item What machines support Perl? Where do I get it? +=item Declarations -=item How can I get a binary version of Perl? +=item Simple statements -=item I don't have a C compiler on my system. How can I compile perl? +=item Compound statements -=item I copied the Perl binary from one machine to another, but scripts -don't work. +=item Loop Control -=item I grabbed the sources and tried to compile but gdbm/dynamic -loading/malloc/linking/... failed. How do I make it work? +=item For Loops -=item What modules and extensions are available for Perl? What is CPAN? -What does CPAN/src/... mean? +=item Foreach Loops -=item Is there an ISO or ANSI certified version of Perl? +=item Basic BLOCKs and Switch Statements -=item Where can I get information on Perl? +=item Goto -=item What are the Perl newsgroups on Usenet? Where do I post questions? +=item PODs: Embedded Documentation -=item Where should I post source code? +=item Plain Old Comments (Not!) -=item Perl Books +=back -References, Tutorials, Task-Oriented, Special Topics +=back -=item Perl in Magazines +=head2 perldata - Perl data types -=item Perl on the Net: FTP and WWW Access +=over -=item What mailing lists are there for Perl? +=item DESCRIPTION -=item Archives of comp.lang.perl.misc +=over -=item Where can I buy a commercial version of Perl? +=item Variable names -=item Where do I send bug reports? +=item Context -=item What is perl.com? Perl Mongers? pm.org? perl.org? +=item Scalar values + +=item Scalar value constructors + +=item List value constructors + +=item Slices + +=item Typeglobs and Filehandles =back -=item AUTHOR AND COPYRIGHT +=item SEE ALSO =back -=head2 perlfaq3 - Programming Tools ($Revision: 1.38 $, $Date: 1999/05/23 -16:08:30 $) +=head2 perlop - Perl operators and precedence =over +=item SYNOPSIS + =item DESCRIPTION =over -=item How do I do (anything)? +=item Terms and List Operators (Leftward) -=item How can I use Perl interactively? +=item The Arrow Operator -=item Is there a Perl shell? +=item Auto-increment and Auto-decrement -=item How do I debug my Perl programs? +=item Exponentiation -=item How do I profile my Perl programs? +=item Symbolic Unary Operators -=item How do I cross-reference my Perl programs? +=item Binding Operators -=item Is there a pretty-printer (formatter) for Perl? +=item Multiplicative Operators -=item Is there a ctags for Perl? +=item Additive Operators -=item Is there an IDE or Windows Perl Editor? +=item Shift Operators -=item Where can I get Perl macros for vi? +=item Named Unary Operators -=item Where can I get perl-mode for emacs? +=item Relational Operators -=item How can I use curses with Perl? +=item Equality Operators -=item How can I use X or Tk with Perl? +=item Bitwise And -=item How can I generate simple menus without using CGI or Tk? +=item Bitwise Or and Exclusive Or -=item What is undump? +=item C-style Logical And -=item How can I make my Perl program run faster? +=item C-style Logical Or -=item How can I make my Perl program take less memory? +=item Range Operators -=item Is it unsafe to return a pointer to local data? +=item Conditional Operator -=item How can I free an array or hash so my program shrinks? +=item Assignment Operators -=item How can I make my CGI script more efficient? +=item Comma Operator -=item How can I hide the source for my Perl program? +=item List Operators (Rightward) -=item How can I compile my Perl program into byte code or C? +=item Logical Not -=item How can I compile Perl into Java? +=item Logical And -=item How can I get C<#!perl> to work on [MS-DOS,NT,...]? +=item Logical or and Exclusive Or -=item Can I write useful Perl programs on the command line? +=item C Operators Missing From Perl -=item Why don't Perl one-liners work on my DOS/Mac/VMS system? +unary &, unary *, (TYPE) -=item Where can I learn about CGI or Web programming in Perl? +=item Quote and Quote-like Operators -=item Where can I learn about object-oriented Perl programming? +=item Regexp Quote-Like Operators -=item Where can I learn about linking C with Perl? [h2xs, xsubpp] +?PATTERN?, m/PATTERN/cgimosx, /PATTERN/cgimosx, q/STRING/, C<'STRING'>, +qq/STRING/, "STRING", qr/STRING/imosx, qx/STRING/, `STRING`, qw/STRING/, +s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cds, +y/SEARCHLIST/REPLACEMENTLIST/cds -=item I've read perlembed, perlguts, etc., but I can't embed perl in -my C program, what am I doing wrong? +=item Gory details of parsing quoted constructs -=item When I tried to run my script, I got this message. What does it -mean? +Finding the end, Removal of backslashes before delimiters, Interpolation, +C<<<'EOF'>, C, C, C, C, C<''>, C, C<"">, +C<``>, C, C, C<< >>, C, C, C, +C,, Interpolation of regular expressions, Optimization of +regular expressions -=item What's MakeMaker? +=item I/O Operators -=back +=item Constant Folding -=item AUTHOR AND COPYRIGHT +=item Bitwise String Operators + +=item Integer Arithmetic + +=item Floating-point Arithmetic + +=item Bigger Numbers =back -=head2 perlfaq4 - Data Manipulation ($Revision: 1.49 $, $Date: 1999/05/23 -20:37:49 $) +=back + +=head2 perlreftut - Mark's very short tutorial about references =over =item DESCRIPTION -=item Data: Numbers +=item Who Needs Complicated Data Structures? + +=item The Solution + +=item Syntax =over -=item Why am I getting long decimals (eg, 19.9499999999999) instead of the -numbers I should be getting (eg, 19.95)? +=item Making References -=item Why isn't my octal data interpreted correctly? +=item Using References -=item Does Perl have a round() function? What about ceil() and floor()? -Trig functions? +=back -=item How do I convert bits into ints? +=item An Example -=item Why doesn't & work the way I want it to? +=item Arrow Rule -=item How do I multiply matrices? +=item Solution -=item How do I perform an operation on a series of integers? +=item The Rest -=item How can I output Roman numerals? +=item Summary -=item Why aren't my random numbers random? +=item Credits + +=over + +=item Distribution Conditions =back -=item Data: Dates +=back + +=head2 perldsc - Perl Data Structures Cookbook =over -=item How do I find the week-of-the-year/day-of-the-year? +=item DESCRIPTION -=item How do I find the current century or millennium? +arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, +more elaborate constructs -=item How can I compare two dates and find the difference? +=item REFERENCES -=item How can I take a string and turn it into epoch seconds? +=item COMMON MISTAKES -=item How can I find the Julian Day? +=item CAVEAT ON PRECEDENCE -=item How do I find yesterday's date? +=item WHY YOU SHOULD ALWAYS C -=item Does Perl have a Year 2000 problem? Is Perl Y2K compliant? +=item DEBUGGING -=back +=item CODE EXAMPLES -=item Data: Strings +=item ARRAYS OF ARRAYS =over -=item How do I validate input? +=item Declaration of a ARRAY OF ARRAYS -=item How do I unescape a string? +=item Generation of a ARRAY OF ARRAYS -=item How do I remove consecutive pairs of characters? +=item Access and Printing of a ARRAY OF ARRAYS -=item How do I expand function calls in a string? +=back -=item How do I find matching/nesting anything? +=item HASHES OF ARRAYS -=item How do I reverse a string? +=over -=item How do I expand tabs in a string? +=item Declaration of a HASH OF ARRAYS -=item How do I reformat a paragraph? +=item Generation of a HASH OF ARRAYS -=item How can I access/change the first N letters of a string? +=item Access and Printing of a HASH OF ARRAYS -=item How do I change the Nth occurrence of something? +=back -=item How can I count the number of occurrences of a substring within a -string? +=item ARRAYS OF HASHES -=item How do I capitalize all the words on one line? +=over -=item How can I split a [character] delimited string except when inside -[character]? (Comma-separated files) +=item Declaration of a ARRAY OF HASHES -=item How do I strip blank space from the beginning/end of a string? +=item Generation of a ARRAY OF HASHES -=item How do I pad a string with blanks or pad a number with zeroes? +=item Access and Printing of a ARRAY OF HASHES -=item How do I extract selected columns from a string? +=back -=item How do I find the soundex value of a string? +=item HASHES OF HASHES -=item How can I expand variables in text strings? +=over -=item What's wrong with always quoting "$vars"? +=item Declaration of a HASH OF HASHES -=item Why don't my < = match 'a' 1 or 0 times, C = match 'a' 0 or more times, i.e., +any number of times, C = match 'a' 1 or more times, i.e., at least +once, C = match at least C times, but not more than C times, +C = match at least C or more times, C = match exactly C +times -=item Why does passing a subroutine an undefined element in a hash create -it? +=item More matching -=item How can I make the Perl equivalent of a C structure/C++ class/hash or -array of hashes or arrays? +=item Search and replace -=item How can I use a reference as a hash key? +=item The split operator =back -=item Data: Misc - -=over - -=item How do I handle binary data correctly? - -=item How do I determine whether a scalar is a number/whole/integer/float? - -=item How do I keep persistent data across program calls? +=item BUGS -=item How do I print out or copy a recursive data structure? +=item SEE ALSO -=item How do I define methods for every class/object? +=item AUTHOR AND COPYRIGHT -=item How do I verify a credit card checksum? +=over -=item How do I pack arrays of doubles or floats for XS code? +=item Acknowledgments =back -=item AUTHOR AND COPYRIGHT - =back -=head2 perlfaq5 - Files and Formats ($Revision: 1.38 $, $Date: 1999/05/23 -16:08:30 $) +=head2 perlretut - Perl regular expressions tutorial =over =item DESCRIPTION -=over +=item Part 1: The basics -=item How do I flush/unbuffer an output filehandle? Why must I do this? +=over -=item How do I change one line in a file/delete a line in a file/insert a -line in the middle of a file/append to the beginning of a file? +=item Simple word matching -=item How do I count the number of lines in a file? +=item Using character classes -=item How do I make a temporary file name? +\d is a digit and represents [0-9], \s is a whitespace character and +represents [\ \t\r\n\f], \w is a word character (alphanumeric or _) and +represents [0-9a-zA-Z_], \D is a negated \d; it represents any character +but a digit [^0-9], \S is a negated \s; it represents any non-whitespace +character [^\s], \W is a negated \w; it represents any non-word character +[^\w], The period '.' matches any character but "\n", no modifiers (//): +Default behavior. C<'.'> matches any character except C<"\n">. C<^> +matches only at the beginning of the string and C<$> matches only at the +end or before a newline at the end, s modifier (//s): Treat string as a +single long line. C<'.'> matches any character, even C<"\n">. C<^> +matches only at the beginning of the string and C<$> matches only at the +end or before a newline at the end, m modifier (//m): Treat string as a set +of multiple lines. C<'.'> matches any character except C<"\n">. C<^> and +C<$> are able to match at the start or end of I line within the +string, both s and m modifiers (//sm): Treat string as a single long line, +but detect multiple lines. C<'.'> matches any character, even C<"\n">. +C<^> and C<$>, however, are able to match at the start or end of I +line within the string -=item How can I manipulate fixed-record-length files? +=item Matching this or that -=item How can I make a filehandle local to a subroutine? How do I pass -filehandles between subroutines? How do I make an array of filehandles? +=item Grouping things and hierarchical matching -=item How can I use a filehandle indirectly? +0 Start with the first letter in the string 'a', 1 Try the first +alternative in the first group 'abd', 2 Match 'a' followed by 'b'. So far +so good, 3 'd' in the regexp doesn't match 'c' in the string - a dead end. +So backtrack two characters and pick the second alternative in the first +group 'abc', 4 Match 'a' followed by 'b' followed by 'c'. We are on a roll +and have satisfied the first group. Set $1 to 'abc', 5 Move on to the +second group and pick the first alternative 'df', 6 Match the 'd', 7 'f' in +the regexp doesn't match 'e' in the string, so a dead end. Backtrack one +character and pick the second alternative in the second group 'd', 8 'd' +matches. The second grouping is satisfied, so set $2 to 'd', 9 We are at +the end of the regexp, so we are done! We have matched 'abcd' out of the +string "abcde" -=item How can I set up a footer format to be used with write()? +=item Extracting matches -=item How can I write() into a string? +=item Matching repetitions -=item How can I output my numbers with commas added? +C = match 'a' 1 or 0 times, C = match 'a' 0 or more times, i.e., +any number of times, C = match 'a' 1 or more times, i.e., at least +once, C = match at least C times, but not more than C times, +C = match at least C or more times, C = match exactly C +times, Principle 0: Taken as a whole, any regexp will be matched at the +earliest possible position in the string, Principle 1: In an alternation +C, the leftmost alternative that allows a match for the whole +regexp will be the one used, Principle 2: The maximal matching quantifiers +C, C<*>, C<+> and C<{n,m}> will in general match as much of the string +as possible while still allowing the whole regexp to match, Principle 3: If +there are two or more elements in a regexp, the leftmost greedy quantifier, +if any, will match as much of the string as possible while still allowing +the whole regexp to match. The next leftmost greedy quantifier, if any, +will try to match as much of the string remaining available to it as +possible, while still allowing the whole regexp to match. And so on, until +all the regexp elements are satisfied, C = match 'a' 0 or 1 times. Try +0 first, then 1, C = match 'a' 0 or more times, i.e., any number of +times, but as few times as possible, C = match 'a' 1 or more times, +i.e., at least once, but as few times as possible, C = match at +least C times, not more than C times, as few times as possible, +C = match at least C times, but as few times as possible, +C = match exactly C times. Because we match exactly C times, +C is equivalent to C and is just there for notational +consistency, Principle 3: If there are two or more elements in a regexp, +the leftmost greedy (non-greedy) quantifier, if any, will match as much +(little) of the string as possible while still allowing the whole regexp to +match. The next leftmost greedy (non-greedy) quantifier, if any, will try +to match as much (little) of the string remaining available to it as +possible, while still allowing the whole regexp to match. And so on, until +all the regexp elements are satisfied, 0 Start with the first letter in the +string 't', 1 The first quantifier '.*' starts out by matching the whole +string 'the cat in the hat', 2 'a' in the regexp element 'at' doesn't match +the end of the string. Backtrack one character, 3 'a' in the regexp +element 'at' still doesn't match the last letter of the string 't', so +backtrack one more character, 4 Now we can match the 'a' and the 't', 5 +Move on to the third element '.*'. Since we are at the end of the string +and '.*' can match 0 times, assign it the empty string, 6 We are done! -=item How can I translate tildes (~) in a filename? +=item Building a regexp -=item How come when I open a file read-write it wipes it out? +specifying the task in detail,, breaking down the problem into smaller +parts,, translating the small parts into regexps,, combining the regexps,, +and optimizing the final combined regexp -=item Why do I sometimes get an "Argument list too long" when I use <*>? +=item Using regular expressions in Perl -=item Is there a leak/bug in glob()? +=back -=item How can I open a file with a leading ">" or trailing blanks? +=item Part 2: Power tools -=item How can I reliably rename a file? +=over -=item How can I lock a file? +=item More on characters, strings, and character classes -=item Why can't I just open(FH, ">file.lock")? +=item Compiling and saving regular expressions -=item I still don't get locking. I just want to increment the number in -the file. How can I do this? +=item Embedding comments and modifiers in a regular expression -=item How do I randomly update a binary file? +=item Non-capturing groupings + +=item Looking ahead and looking behind + +=item Using independent subexpressions to prevent backtracking + +=item Conditional expressions -=item How do I get a file's timestamp in perl? +=item A bit of magic: executing Perl code in a regular expression -=item How do I set a file's timestamp in perl? +=item Pragmas and debugging -=item How do I print to more than one file at once? +=back -=item How can I read in an entire file all at once? +=item BUGS -=item How can I read in a file by paragraphs? +=item SEE ALSO -=item How can I read a single character from a file? From the keyboard? +=item AUTHOR AND COPYRIGHT -=item How can I tell whether there's a character waiting on a filehandle? +=over -=item How do I do a C in perl? +=item Acknowledgments -=item How do I dup() a filehandle in Perl? +=back -=item How do I close a file descriptor by number? +=back -=item Why can't I use "C:\temp\foo" in DOS paths? What doesn't -`C:\temp\foo.exe` work? +=head2 perllexwarn - Perl Lexical Warnings -=item Why doesn't glob("*.*") get all the files? +=over -=item Why does Perl let me delete read-only files? Why does C<-i> clobber -protected files? Isn't this a bug in Perl? +=item DESCRIPTION -=item How do I select a random line from a file? +=over -=item Why do I get weird spaces when I print an array of lines? +=item Default Warnings and Optional Warnings -=back +=item What's wrong with B<-w> and C<$^W> -=item AUTHOR AND COPYRIGHT +=item Controlling Warnings from the Command Line -=back +B<-w>, B<-W>, B<-X> -=head2 perlfaq6 - Regexes ($Revision: 1.27 $, $Date: 1999/05/23 16:08:30 $) +=item Backward Compatibility -=over +=item Category Hierarchy -=item DESCRIPTION +=item Fatal Warnings -=over +=item Reporting Warnings from a Module -=item How can I hope to use regular expressions without creating illegible -and unmaintainable code? +=back -Comments Outside the Regex, Comments Inside the Regex, Different Delimiters +=item TODO -=item I'm having trouble matching over more than one line. What's wrong? +=item SEE ALSO -=item How can I pull out lines between two patterns that are themselves on -different lines? +=item AUTHOR -=item I put a regular expression into $/ but it didn't work. What's wrong? +=back -=item How do I substitute case insensitively on the LHS, but preserving -case on the RHS? +=head2 perldebug - Perl debugging -=item How can I make C<\w> match national character sets? +=over -=item How can I match a locale-smart version of C? +=item DESCRIPTION -=item How can I quote a variable to use in a regex? +=item The Perl Debugger -=item What is C really for? +=over -=item How do I use a regular expression to strip C style comments from a -file? +=item Debugger Commands -=item Can I use Perl regular expressions to match balanced text? +h [command], p expr, x expr, V [pkg [vars]], X [vars], T, s [expr], n +[expr], r, , c [line|sub], l, l min+incr, l min-max, l line, l subname, +-, w [line], f filename, /pattern/, ?pattern?, L, S [[!]regex], t, t expr, +b [line] [condition], b subname [condition], b postpone subname +[condition], b load filename, b compile subname, d [line], D, a [line] +command, a [line], A, W expr, W, O booloption .., O anyoption? .., O +option=value .., < ?, < [ command ], << command, > ?, > command, >> +command, { ?, { [ command ], {{ command, ! number, ! -number, ! pattern, !! +cmd, H -number, q or ^D, R, |dbcmd, ||dbcmd, command, m expr, man [manpage] -=item What does it mean that regexes are greedy? How can I get around it? +=item Configurable Options -=item How do I process each word on each line? +C, C, C, C, C, +C, C, C, C, C, +C, C, C, C, C, +C, C, C, C, C, +C, C, C, C, C, +C, C, C, C, C -=item How can I print out a word-frequency or line-frequency summary? +=item Debugger input/output -=item How can I do approximate matching? +Prompt, Multiline commands, Stack backtrace, Line Listing Format, Frame +listing -=item How do I efficiently match many regular expressions at once? +=item Debugging compile-time statements -=item Why don't word-boundary searches with C<\b> work for me? +=item Debugger Customization -=item Why does using $&, $`, or $' slow my program down? +=item Readline Support -=item What good is C<\G> in a regular expression? +=item Editor Support for Debugging -=item Are Perl regexes DFAs or NFAs? Are they POSIX compliant? +=item The Perl Profiler -=item What's wrong with using grep or map in a void context? +=back -=item How can I match strings with multibyte characters? +=item Debugging regular expressions -=item How do I match a pattern that is supplied by the user? +=item Debugging memory usage -=back +=item SEE ALSO -=item AUTHOR AND COPYRIGHT +=item BUGS =back -=head2 perlfaq7 - Perl Language Issues ($Revision: 1.28 $, $Date: -1999/05/23 20:36:18 $) +=head2 perlrun - how to execute the Perl interpreter =over +=item SYNOPSIS + =item DESCRIPTION =over -=item Can I get a BNF/yacc/RE for the Perl language? +=item #! and quoting on non-Unix systems -=item What are all these $@%&* punctuation signs, and how do I know when to -use them? +OS/2, MS-DOS, Win95/NT, Macintosh, VMS -=item Do I always/never have to quote my strings or use semicolons and -commas? +=item Location of Perl -=item How do I skip some return values? +=item Command Switches + +B<-0>[I], B<-a>, B<-C>, B<-c>, B<-d>, B<-d:>I, +B<-D>I, B<-D>I, B<-e> I, B<-F>I, +B<-h>, B<-i>[I], B<-I>I, B<-l>[I], +B<-m>[B<->]I, B<-M>[B<->]I, B<-M>[B<->]I<'module ...'>, +B<-[mM]>[B<->]I, B<-n>, B<-p>, B<-P>, B<-s>, B<-S>, +B<-T>, B<-u>, B<-U>, B<-v>, B<-V>, B<-V:>I, B<-w>, B<-W>, B<-X>, +B<-x> I + +=back + +=item ENVIRONMENT + +HOME, LOGDIR, PATH, PERL5LIB, PERL5OPT, PERLLIB, PERL5DB, PERL5SHELL +(specific to the Win32 port), PERL_DEBUG_MSTATS, PERL_DESTRUCT_LEVEL, +PERL_ROOT (specific to the VMS port), SYS$LOGIN (specific to the VMS port) + +=back + +=head2 perlfunc - Perl builtin functions + +=over + +=item DESCRIPTION + +=over + +=item Perl Functions by Category + +Functions for SCALARs or strings, Regular expressions and pattern matching, +Numeric functions, Functions for real @ARRAYs, Functions for list data, +Functions for real %HASHes, Input and output functions, Functions for fixed +length data or records, Functions for filehandles, files, or directories, +Keywords related to the control flow of your perl program, Keywords related +to scoping, Miscellaneous functions, Functions for processes and process +groups, Keywords related to perl modules, Keywords related to classes and +object-orientedness, Low-level socket functions, System V interprocess +communication functions, Fetching user and group info, Fetching network +info, Time-related functions, Functions new in perl5, Functions obsoleted +in perl5 + +=item Portability + +=item Alphabetical Listing of Perl Functions + +I<-X> FILEHANDLE, I<-X> EXPR, I<-X>, abs VALUE, abs, accept +NEWSOCKET,GENERICSOCKET, alarm SECONDS, alarm, atan2 Y,X, bind SOCKET,NAME, +binmode FILEHANDLE, DISCIPLINE, binmode FILEHANDLE, bless REF,CLASSNAME, +bless REF, caller EXPR, caller, chdir EXPR, chmod LIST, chomp VARIABLE, +chomp LIST, chomp, chop VARIABLE, chop LIST, chop, chown LIST, chr NUMBER, +chr, chroot FILENAME, chroot, close FILEHANDLE, close, closedir DIRHANDLE, +connect SOCKET,NAME, continue BLOCK, cos EXPR, crypt PLAINTEXT,SALT, +dbmclose HASH, dbmopen HASH,DBNAME,MASK, defined EXPR, defined, delete +EXPR, die LIST, do BLOCK, do SUBROUTINE(LIST), do EXPR, dump LABEL, dump, +each HASH, eof FILEHANDLE, eof (), eof, eval EXPR, eval BLOCK, exec LIST, +exec PROGRAM LIST, exists EXPR, exit EXPR, exp EXPR, exp, fcntl +FILEHANDLE,FUNCTION,SCALAR, fileno FILEHANDLE, flock FILEHANDLE,OPERATION, +fork, format, formline PICTURE,LIST, getc FILEHANDLE, getc, getlogin, +getpeername SOCKET, getpgrp PID, getppid, getpriority WHICH,WHO, getpwnam +NAME, getgrnam NAME, gethostbyname NAME, getnetbyname NAME, getprotobyname +NAME, getpwuid UID, getgrgid GID, getservbyname NAME,PROTO, gethostbyaddr +ADDR,ADDRTYPE, getnetbyaddr ADDR,ADDRTYPE, getprotobynumber NUMBER, +getservbyport PORT,PROTO, getpwent, getgrent, gethostent, getnetent, +getprotoent, getservent, setpwent, setgrent, sethostent STAYOPEN, setnetent +STAYOPEN, setprotoent STAYOPEN, setservent STAYOPEN, endpwent, endgrent, +endhostent, endnetent, endprotoent, endservent, getsockname SOCKET, +getsockopt SOCKET,LEVEL,OPTNAME, glob EXPR, glob, gmtime EXPR, goto LABEL, +goto EXPR, goto &NAME, grep BLOCK LIST, grep EXPR,LIST, hex EXPR, hex, +import, index STR,SUBSTR,POSITION, index STR,SUBSTR, int EXPR, int, ioctl +FILEHANDLE,FUNCTION,SCALAR, join EXPR,LIST, keys HASH, kill SIGNAL, LIST, +last LABEL, last, lc EXPR, lc, lcfirst EXPR, lcfirst, length EXPR, length, +link OLDFILE,NEWFILE, listen SOCKET,QUEUESIZE, local EXPR, localtime EXPR, +lock, log EXPR, log, lstat FILEHANDLE, lstat EXPR, lstat, m//, map BLOCK +LIST, map EXPR,LIST, mkdir FILENAME,MASK, mkdir FILENAME, msgctl +ID,CMD,ARG, msgget KEY,FLAGS, msgrcv ID,VAR,SIZE,TYPE,FLAGS, msgsnd +ID,MSG,FLAGS, my EXPR, my EXPR : ATTRIBUTES, next LABEL, next, no Module +LIST, oct EXPR, oct, open FILEHANDLE,MODE,LIST, open FILEHANDLE,EXPR, open +FILEHANDLE, opendir DIRHANDLE,EXPR, ord EXPR, ord, our EXPR, pack +TEMPLATE,LIST, package, package NAMESPACE, pipe READHANDLE,WRITEHANDLE, pop +ARRAY, pop, pos SCALAR, pos, print FILEHANDLE LIST, print LIST, print, +printf FILEHANDLE FORMAT, LIST, printf FORMAT, LIST, prototype FUNCTION, +push ARRAY,LIST, q/STRING/, qq/STRING/, qr/STRING/, qx/STRING/, qw/STRING/, +quotemeta EXPR, quotemeta, rand EXPR, rand, read +FILEHANDLE,SCALAR,LENGTH,OFFSET, read FILEHANDLE,SCALAR,LENGTH, readdir +DIRHANDLE, readline EXPR, readlink EXPR, readlink, readpipe EXPR, recv +SOCKET,SCALAR,LENGTH,FLAGS, redo LABEL, redo, ref EXPR, ref, rename +OLDNAME,NEWNAME, require VERSION, require EXPR, require, reset EXPR, reset, +return EXPR, return, reverse LIST, rewinddir DIRHANDLE, rindex +STR,SUBSTR,POSITION, rindex STR,SUBSTR, rmdir FILENAME, rmdir, s///, scalar +EXPR, seek FILEHANDLE,POSITION,WHENCE, seekdir DIRHANDLE,POS, select +FILEHANDLE, select, select RBITS,WBITS,EBITS,TIMEOUT, semctl +ID,SEMNUM,CMD,ARG, semget KEY,NSEMS,FLAGS, semop KEY,OPSTRING, send +SOCKET,MSG,FLAGS,TO, send SOCKET,MSG,FLAGS, setpgrp PID,PGRP, setpriority +WHICH,WHO,PRIORITY, setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL, shift ARRAY, +shift, shmctl ID,CMD,ARG, shmget KEY,SIZE,FLAGS, shmread ID,VAR,POS,SIZE, +shmwrite ID,STRING,POS,SIZE, shutdown SOCKET,HOW, sin EXPR, sin, sleep +EXPR, sleep, socket SOCKET,DOMAIN,TYPE,PROTOCOL, socketpair +SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, sort SUBNAME LIST, sort BLOCK LIST, +sort LIST, splice ARRAY,OFFSET,LENGTH,LIST, splice ARRAY,OFFSET,LENGTH, +splice ARRAY,OFFSET, splice ARRAY, split /PATTERN/,EXPR,LIMIT, split +/PATTERN/,EXPR, split /PATTERN/, split, sprintf FORMAT, LIST, sqrt EXPR, +sqrt, srand EXPR, srand, stat FILEHANDLE, stat EXPR, stat, study SCALAR, +study, sub BLOCK, sub NAME, sub NAME BLOCK, substr +EXPR,OFFSET,LENGTH,REPLACEMENT, substr EXPR,OFFSET,LENGTH, substr +EXPR,OFFSET, symlink OLDFILE,NEWFILE, syscall LIST, sysopen +FILEHANDLE,FILENAME,MODE, sysopen FILEHANDLE,FILENAME,MODE,PERMS, sysread +FILEHANDLE,SCALAR,LENGTH,OFFSET, sysread FILEHANDLE,SCALAR,LENGTH, sysseek +FILEHANDLE,POSITION,WHENCE, system LIST, system PROGRAM LIST, syswrite +FILEHANDLE,SCALAR,LENGTH,OFFSET, syswrite FILEHANDLE,SCALAR,LENGTH, +syswrite FILEHANDLE,SCALAR, tell FILEHANDLE, tell, telldir DIRHANDLE, tie +VARIABLE,CLASSNAME,LIST, tied VARIABLE, time, times, tr///, truncate +FILEHANDLE,LENGTH, truncate EXPR,LENGTH, uc EXPR, uc, ucfirst EXPR, +ucfirst, umask EXPR, umask, undef EXPR, undef, unlink LIST, unlink, unpack +TEMPLATE,EXPR, untie VARIABLE, unshift ARRAY,LIST, use Module VERSION LIST, +use Module VERSION, use Module LIST, use Module, use VERSION, utime LIST, +values HASH, vec EXPR,OFFSET,BITS, wait, waitpid PID,FLAGS, wantarray, warn +LIST, write FILEHANDLE, write EXPR, write, y/// + +=back + +=back + +=head2 perlopentut - tutorial on opening things in Perl + +=over + +=item DESCRIPTION + +=item Open E la shell + +=over + +=item Simple Opens + +=item Pipe Opens + +=item The Minus File + +=item Mixing Reads and Writes + +=item Filters + +=back + +=item Open E la C + +=over + +=item Permissions E la mode + +=back + +=item Obscure Open Tricks + +=over + +=item Re-Opening Files (dups) + +=item Dispelling the Dweomer + +=item Paths as Opens + +=item Single Argument Open + +=item Playing with STDIN and STDOUT + +=back + +=item Other I/O Issues + +=over + +=item Opening Non-File Files + +=item Binary Files + +=item File Locking + +=back + +=item SEE ALSO + +=item AUTHOR and COPYRIGHT + +=item HISTORY + +=back + +=head2 perlvar - Perl predefined variables + +=over + +=item DESCRIPTION + +=over + +=item Predefined Names + +$ARG, $_, $>, $MATCH, $&, $PREMATCH, $`, $POSTMATCH, $', +$LAST_PAREN_MATCH, $+, @LAST_MATCH_END, @+, $MULTILINE_MATCHING, $*, +input_line_number HANDLE EXPR, $INPUT_LINE_NUMBER, $NR, $, +input_record_separator HANDLE EXPR, $INPUT_RECORD_SEPARATOR, $RS, $/, +autoflush HANDLE EXPR, $OUTPUT_AUTOFLUSH, $|, output_field_separator HANDLE +EXPR, $OUTPUT_FIELD_SEPARATOR, $OFS, $,, output_record_separator HANDLE +EXPR, $OUTPUT_RECORD_SEPARATOR, $ORS, $\, $LIST_SEPARATOR, $", +$SUBSCRIPT_SEPARATOR, $SUBSEP, $;, $OFMT, $#, format_page_number HANDLE +EXPR, $FORMAT_PAGE_NUMBER, $%, format_lines_per_page HANDLE EXPR, +$FORMAT_LINES_PER_PAGE, $=, format_lines_left HANDLE EXPR, +$FORMAT_LINES_LEFT, $-, @LAST_MATCH_START, @-, C<$`> is the same as +C, C<$&> is the same as C, C<$'> is the same as C, C<$1> is the same +as C, C<$2> is the same as +C, C<$3> is the same as C, format_name HANDLE EXPR, $FORMAT_NAME, $~, +format_top_name HANDLE EXPR, $FORMAT_TOP_NAME, $^, +format_line_break_characters HANDLE EXPR, $FORMAT_LINE_BREAK_CHARACTERS, +$:, format_formfeed HANDLE EXPR, $FORMAT_FORMFEED, $^L, $ACCUMULATOR, $^A, +$CHILD_ERROR, $?, $OS_ERROR, $ERRNO, $!, $EXTENDED_OS_ERROR, $^E, +$EVAL_ERROR, $@, $PROCESS_ID, $PID, $$, $REAL_USER_ID, $UID, $<, +$EFFECTIVE_USER_ID, $EUID, $>, $REAL_GROUP_ID, $GID, $(, +$EFFECTIVE_GROUP_ID, $EGID, $), $PROGRAM_NAME, $0, $[, $], $COMPILING, $^C, +$DEBUGGING, $^D, $SYSTEM_FD_MAX, $^F, $^H, %^H, $INPLACE_EDIT, $^I, $^M, +$OSNAME, $^O, $PERLDB, $^P, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +0x100, 0x200, $LAST_REGEXP_CODE_RESULT, $^R, $EXCEPTIONS_BEING_CAUGHT, $^S, +$BASETIME, $^T, $PERL_VERSION, $^V, $WARNING, $^W, ${^WARNING_BITS}, +${^WIDE_SYSTEM_CALLS}, $EXECUTABLE_NAME, $^X, $ARGV, @ARGV, @INC, @_, %INC, +%ENV, $ENV{expr}, %SIG, $SIG{expr} + +=item Error Indicators + +=item Technical Note on the Syntax of Variable Names + +=back + +=item BUGS + +=back + +=head2 perlsub - Perl subroutines + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item Private Variables via my() + +=item Persistent Private Variables + +=item Temporary Values via local() + +=item Lvalue subroutines + +=item Passing Symbol Table Entries (typeglobs) + +=item When to Still Use local() + +1. You need to give a global variable a temporary value, especially $_, 2. +You need to create a local file or directory handle or a local function, 3. +You want to temporarily change just one element of an array or hash + +=item Pass by Reference + +=item Prototypes + +=item Constant Functions + +=item Overriding Built-in Functions + +=item Autoloading + +=item Subroutine Attributes + +=back + +=item SEE ALSO + +=back + +=head2 perlmod - Perl modules (packages and symbol tables) + +=over + +=item DESCRIPTION + +=over + +=item Packages + +=item Symbol Tables + +=item Package Constructors and Destructors + +=item Perl Classes + +=item Perl Modules + +=back + +=item SEE ALSO + +=back + +=head2 perlpod - plain old documentation + +=over + +=item DESCRIPTION + +=over + +=item Verbatim Paragraph + +=item Command Paragraph + +=item Ordinary Block of Text + +=item The Intent + +=item Embedding Pods in Perl Modules + +=item Common Pod Pitfalls + +=back + +=item SEE ALSO + +=item AUTHOR + +=back + +=head2 perlstyle - Perl style guide + +=over + +=item DESCRIPTION + +=back + +=head2 perlmodlib - constructing new Perl modules and finding existing ones + +=over + +=item DESCRIPTION + +=item THE PERL MODULE LIBRARY + +=over + +=item Pragmatic Modules + +attributes, attrs, autouse, base, blib, bytes, charnames, constant, +diagnostics, fields, filetest, integer, less, locale, open, ops, overload, +re, sigtrap, strict, subs, utf8, vars, warnings + +=item Standard Modules + +AnyDBM_File, AutoLoader, AutoSplit, B, B::Asmdata, B::Assembler, B::Bblock, +B::Bytecode, B::C, B::CC, B::Debug, B::Deparse, B::Disassembler, B::Lint, +B::Showlex, B::Stackobj, B::Terse, B::Xref, Benchmark, ByteLoader, CGI, +CGI::Apache, CGI::Carp, CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push, +CGI::Switch, CPAN, CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy, +Class::Struct, Cwd, DB, DB_File, Devel::SelfStubber, DirHandle, Dumpvalue, +English, Env, Exporter, Exporter::Heavy, ExtUtils::Command, +ExtUtils::Embed, ExtUtils::Install, ExtUtils::Installed, ExtUtils::Liblist, +ExtUtils::MM_Cygwin, ExtUtils::MM_OS2, ExtUtils::MM_Unix, ExtUtils::MM_VMS, +ExtUtils::MM_Win32, ExtUtils::MakeMaker, ExtUtils::Manifest, +ExtUtils::Mkbootstrap, ExtUtils::Mksymlists, ExtUtils::Packlist, +ExtUtils::testlib, Fatal, Fcntl, File::Basename, File::CheckTree, +File::Compare, File::Copy, File::DosGlob, File::Find, File::Path, +File::Spec, File::Spec::Functions, File::Spec::Mac, File::Spec::OS2, +File::Spec::Unix, File::Spec::VMS, File::Spec::Win32, File::Temp, +File::stat, FileCache, FileHandle, FindBin, Getopt::Long, Getopt::Std, +I18N::Collate, IO, IPC::Open2, IPC::Open3, Math::BigFloat, Math::BigInt, +Math::Complex, Math::Trig, NDBM_File, Net::Ping, Net::hostent, Net::netent, +Net::protoent, Net::servent, O, ODBM_File, Opcode, Pod::Checker, Pod::Find, +Pod::Html, Pod::InputObjects, Pod::LaTeX, Pod::Man, Pod::ParseUtils, +Pod::Parser, Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color, +Pod::Text::Termcap, Pod::Usage, SDBM_File, Safe, Search::Dict, SelectSaver, +SelfLoader, Shell, Socket, Symbol, Term::ANSIColor, Term::Cap, +Term::Complete, Term::ReadLine, Test, Test::Harness, Text::Abbrev, +Text::ParseWords, Text::Soundex, Text::Wrap, Tie::Array, Tie::Handle, +Tie::Hash, Tie::RefHash, Tie::Scalar, Tie::SubstrHash, Time::Local, +Time::gmtime, Time::localtime, Time::tm, UNIVERSAL, User::grent, +User::pwent + +=item Extension Modules + +=back + +=item CPAN + +Language Extensions and Documentation Tools, Development Support, Operating +System Interfaces, Networking, Device Control (modems) and InterProcess +Communication, Data Types and Data Type Utilities, Database Interfaces, +User Interfaces, Interfaces to / Emulations of Other Programming Languages, +File Names, File Systems and File Locking (see also File Handles), String +Processing, Language Text Processing, Parsing, and Searching, Option, +Argument, Parameter, and Configuration File Processing, +Internationalization and Locale, Authentication, Security, and Encryption, +World Wide Web, HTML, HTTP, CGI, MIME, Server and Daemon Utilities, +Archiving and Compression, Images, Pixmap and Bitmap Manipulation, Drawing, +and Graphing, Mail and Usenet News, Control Flow Utilities (callbacks and +exceptions etc), File Handle and Input/Output Stream Utilities, +Miscellaneous Modules, Africa, Asia, Australasia, Central America, Europe, +North America, South America + +=item Modules: Creation, Use, and Abuse + +=over + +=item Guidelines for Module Creation + +Do similar modules already exist in some form?, Try to design the new +module to be easy to extend and reuse, Some simple style guidelines, Select +what to export, Select a name for the module, Have you got it right?, +README and other Additional Files, A description of the +module/package/extension etc, A copyright notice - see below, Prerequisites +- what else you may need to have, How to build it - possible changes to +Makefile.PL etc, How to install it, Recent changes in this release, +especially incompatibilities, Changes / enhancements you plan to make in +the future, Adding a Copyright Notice, Give the module a +version/issue/release number, How to release and distribute a module, Take +care when changing a released module + +=item Guidelines for Converting Perl 4 Library Scripts into Modules + +There is no requirement to convert anything, Consider the implications, +Make the most of the opportunity, The pl2pm utility will get you started, +Adds the standard Module prologue lines, Converts package specifiers from ' +to ::, Converts die(...) to croak(...), Several other minor changes + +=item Guidelines for Reusing Application Code + +Complete applications rarely belong in the Perl Module Library, Many +applications contain some Perl code that could be reused, Break-out the +reusable code into one or more separate module files, Take the opportunity +to reconsider and redesign the interfaces, In some cases the 'application' +can then be reduced to a small + +=back + +=item NOTE + +=back + +=head2 perlmodinstall - Installing CPAN Modules + +=over + +=item DESCRIPTION + +=over + +=item PREAMBLE + +B the file, B the file into a directory, B the +module (sometimes unnecessary), B the module + +=back + +=item HEY + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 perlnewmod - preparing a new module for distribution + +=over + +=item DESCRIPTION + +=over + +=item Warning + +=item What should I make into a module? + +=item Step-by-step: Preparing the ground + +Look around, Check it's new, Discuss the need, Choose a name, Check again + +=item Step-by-step: Making the module + +Start with F, Use L and L, Use +L, Use L - wisely!, Use L, Write tests, Write the README + +=item Step-by-step: Distributing your module + +Get a CPAN user ID, C, Upload the +tarball, Announce to the modules list, Announce to clpa, Fix bugs! + +=back + +=item AUTHOR + +=item SEE ALSO + +=back + +=head2 perltrap - Perl traps for the unwary + +=over + +=item DESCRIPTION + +=over + +=item Awk Traps + +=item C Traps + +=item Sed Traps + +=item Shell Traps + +=item Perl Traps + +=item Perl4 to Perl5 Traps + +Discontinuance, Deprecation, and BugFix traps, Parsing Traps, Numerical +Traps, General data type traps, Context Traps - scalar, list contexts, +Precedence Traps, General Regular Expression Traps using s///, etc, +Subroutine, Signal, Sorting Traps, OS Traps, DBM Traps, Unclassified Traps + +=item Discontinuance, Deprecation, and BugFix traps + +Discontinuance, Deprecation, BugFix, Discontinuance, Discontinuance, +Discontinuance, BugFix, Discontinuance, Discontinuance, BugFix, +Discontinuance, Deprecation, Discontinuance, Discontinuance + +=item Parsing Traps + +Parsing, Parsing, Parsing, Parsing + +=item Numerical Traps + +Numerical, Numerical, Numerical, Bitwise string ops + +=item General data type traps + +(Arrays), (Arrays), (Hashes), (Globs), (Globs), (Scalar String), +(Constants), (Scalars), (Variable Suicide) + +=item Context Traps - scalar, list contexts + +(list context), (scalar context), (scalar context), (list, builtin) + +=item Precedence Traps + +Precedence, Precedence, Precedence, Precedence, Precedence, Precedence, +Precedence + +=item General Regular Expression Traps using s///, etc. + +Regular Expression, Regular Expression, Regular Expression, Regular +Expression, Regular Expression, Regular Expression, Regular Expression, +Regular Expression + +=item Subroutine, Signal, Sorting Traps + +(Signals), (Sort Subroutine), warn() won't let you specify a filehandle + +=item OS Traps + +(SysV), (SysV) + +=item Interpolation Traps + +Interpolation, Interpolation, Interpolation, Interpolation, Interpolation, +Interpolation, Interpolation, Interpolation, Interpolation + +=item DBM Traps + +DBM, DBM + +=item Unclassified Traps + +C/C trap using returned value, C on empty string with +LIMIT specified + +=back + +=back + +=head2 perlport - Writing portable Perl + +=over + +=item DESCRIPTION + +Not all Perl programs have to be portable, Nearly all of Perl already I +portable + +=item ISSUES + +=over + +=item Newlines + +=item Numbers endianness and Width + +=item Files and Filesystems + +=item System Interaction + +=item Interprocess Communication (IPC) + +=item External Subroutines (XS) + +=item Standard Modules + +=item Time and Date + +=item Character sets and character encoding + +=item Internationalisation + +=item System Resources + +=item Security + +=item Style + +=back + +=item CPAN Testers + +Mailing list: cpan-testers@perl.org, Testing results: +http://testers.cpan.org/ + +=item PLATFORMS + +=over + +=item Unix + +=item DOS and Derivatives + +Build instructions for OS/2, L + +=item S + +=item VMS + +=item VOS + +=item EBCDIC Platforms + +=item Acorn RISC OS + +=item Other perls + +=back + +=item FUNCTION IMPLEMENTATIONS + +=over + +=item Alphabetical Listing of Perl Functions + +-I FILEHANDLE, -I EXPR, -I, alarm SECONDS, alarm, binmode +FILEHANDLE, chmod LIST, chown LIST, chroot FILENAME, chroot, crypt +PLAINTEXT,SALT, dbmclose HASH, dbmopen HASH,DBNAME,MODE, dump LABEL, exec +LIST, fcntl FILEHANDLE,FUNCTION,SCALAR, flock FILEHANDLE,OPERATION, fork, +getlogin, getpgrp PID, getppid, getpriority WHICH,WHO, getpwnam NAME, +getgrnam NAME, getnetbyname NAME, getpwuid UID, getgrgid GID, getnetbyaddr +ADDR,ADDRTYPE, getprotobynumber NUMBER, getservbyport PORT,PROTO, getpwent, +getgrent, gethostent, getnetent, getprotoent, getservent, setpwent, +setgrent, sethostent STAYOPEN, setnetent STAYOPEN, setprotoent STAYOPEN, +setservent STAYOPEN, endpwent, endgrent, endhostent, endnetent, +endprotoent, endservent, getsockopt SOCKET,LEVEL,OPTNAME, glob EXPR, glob, +ioctl FILEHANDLE,FUNCTION,SCALAR, kill SIGNAL, LIST, link OLDFILE,NEWFILE, +lstat FILEHANDLE, lstat EXPR, lstat, msgctl ID,CMD,ARG, msgget KEY,FLAGS, +msgsnd ID,MSG,FLAGS, msgrcv ID,VAR,SIZE,TYPE,FLAGS, open FILEHANDLE,EXPR, +open FILEHANDLE, pipe READHANDLE,WRITEHANDLE, readlink EXPR, readlink, +select RBITS,WBITS,EBITS,TIMEOUT, semctl ID,SEMNUM,CMD,ARG, semget +KEY,NSEMS,FLAGS, semop KEY,OPSTRING, setgrent, setpgrp PID,PGRP, +setpriority WHICH,WHO,PRIORITY, setpwent, setsockopt +SOCKET,LEVEL,OPTNAME,OPTVAL, shmctl ID,CMD,ARG, shmget KEY,SIZE,FLAGS, +shmread ID,VAR,POS,SIZE, shmwrite ID,STRING,POS,SIZE, socketpair +SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, stat FILEHANDLE, stat EXPR, stat, +symlink OLDFILE,NEWFILE, syscall LIST, sysopen +FILEHANDLE,FILENAME,MODE,PERMS, system LIST, times, truncate +FILEHANDLE,LENGTH, truncate EXPR,LENGTH, umask EXPR, umask, utime LIST, +wait, waitpid PID,FLAGS + +=back + +=item CHANGES + +v1.47, 22 March 2000, v1.46, 12 February 2000, v1.45, 20 December 1999, +v1.44, 19 July 1999, v1.43, 24 May 1999, v1.42, 22 May 1999, v1.41, 19 May +1999, v1.40, 11 April 1999, v1.39, 11 February 1999, v1.38, 31 December +1998, v1.37, 19 December 1998, v1.36, 9 September 1998, v1.35, 13 August +1998, v1.33, 06 August 1998, v1.32, 05 August 1998, v1.30, 03 August 1998, +v1.23, 10 July 1998 + +=item Supported Platforms + +=item SEE ALSO + +=item AUTHORS / CONTRIBUTORS + +=item VERSION + +=back + +=head2 perlsec - Perl security + +=over + +=item DESCRIPTION + +=over + +=item Laundering and Detecting Tainted Data + +=item Switches On the "#!" Line + +=item Cleaning Up Your Path + +=item Security Bugs + +=item Protecting Your Programs + +=back + +=item SEE ALSO + +=back + +=head2 perlref - Perl references and nested data structures + +=over + +=item NOTE + +=item DESCRIPTION + +=over + +=item Making References + +=item Using References + +=item Symbolic references + +=item Not-so-symbolic references + +=item Pseudo-hashes: Using an array as a hash + +=item Function Templates + +=back + +=item WARNING + +=item SEE ALSO + +=back + +=head2 perlre - Perl regular expressions + +=over + +=item DESCRIPTION + +i, m, s, x + +=over + +=item Regular Expressions + +cntrl, graph, print, punct, xdigit + +=item Extended Patterns + +C<(?#text)>, C<(?imsx-imsx)>, C<(?:pattern)>, C<(?imsx-imsx:pattern)>, +C<(?=pattern)>, C<(?!pattern)>, C<(?<=pattern)>, C<(?, C<(?{ +code })>, C<(??{ code })>, C<< (?>pattern) >>, +C<(?(condition)yes-pattern|no-pattern)>, C<(?(condition)yes-pattern)> + +=item Backtracking + +=item Version 8 Regular Expressions + +=item Warning on \1 vs $1 + +=item Repeated patterns matching zero-length substring + +=item Combining pieces together + +C, C, C, C, C, C, +C, C, C, C, C, C<< (?>S) >>, C<(?=S)>, C<(?<=S)>, +C<(?!S)>, C<(?, C<(??{ EXPR })>, +C<(?(condition)yes-pattern|no-pattern)> + +=item Creating custom RE engines + +=back + +=item BUGS + +=item SEE ALSO + +=back + +=head2 perlform - Perl formats + +=over + +=item DESCRIPTION + +=over + +=item Format Variables + +=back + +=item NOTES + +=over + +=item Footers + +=item Accessing Formatting Internals + +=back + +=item WARNINGS + +=back + +=head2 perllocale - Perl locale handling (internationalization and +localization) + +=over + +=item DESCRIPTION + +=item PREPARING TO USE LOCALES + +=item USING LOCALES + +=over + +=item The use locale pragma + +=item The setlocale function + +=item Finding locales + +=item LOCALE PROBLEMS + +=item Temporarily fixing locale problems + +=item Permanently fixing locale problems + +=item Permanently fixing your system's locale configuration + +=item Fixing system locale configuration + +=item The localeconv function + +=back + +=item LOCALE CATEGORIES + +=over + +=item Category LC_COLLATE: Collation + +=item Category LC_CTYPE: Character Types + +=item Category LC_NUMERIC: Numeric Formatting + +=item Category LC_MONETARY: Formatting of monetary amounts + +=item LC_TIME + +=item Other categories + +=back + +=item SECURITY + +B (C, C, C, C and C):, +B (with C<\l>, C<\L>, C<\u> or C<\U>), +B (C):, B (C):, +B (printf() and write()):, B (lc(), lcfirst(), uc(), ucfirst()):, B (localeconv(), strcoll(), strftime(), strxfrm()):, B (isalnum(), isalpha(), isdigit(), isgraph(), +islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit()): + +=item ENVIRONMENT + +PERL_BADLANG, LC_ALL, LANGUAGE, LC_CTYPE, LC_COLLATE, LC_MONETARY, +LC_NUMERIC, LC_TIME, LANG + +=item NOTES + +=over + +=item Backward compatibility + +=item I18N:Collate obsolete + +=item Sort speed and memory use impacts + +=item write() and LC_NUMERIC + +=item Freely available locale definitions + +=item I18n and l10n + +=item An imperfect standard + +=back + +=item BUGS + +=over + +=item Broken systems + +=back + +=item SEE ALSO + +=item HISTORY + +=back + +=head2 perlunicode - Unicode support in Perl + +=over + +=item DESCRIPTION + +=over + +=item Important Caveat + +Input and Output Disciplines, Regular Expressions, C still needed +to enable a few features + +=item Byte and Character semantics + +=item Effects of character semantics + +=item Character encodings for input and output + +=back + +=item CAVEATS + +=item SEE ALSO + +=back + +=head2 perlboot - Beginner's Object-Oriented Tutorial + +=over + +=item DESCRIPTION + +=over + +=item If we could talk to the animals... + +=item Introducing the method invocation arrow + +=item Invoking a barnyard + +=item The extra parameter of method invocation + +=item Calling a second method to simplify things + +=item Inheriting the windpipes + +=item A few notes about @ISA + +=item Overriding the methods + +=item Starting the search from a different place + +=item The SUPER way of doing things + +=item Where we're at so far... + +=item A horse is a horse, of course of course -- or is it? + +=item Invoking an instance method + +=item Accessing the instance data + +=item How to build a horse + +=item Inheriting the constructor + +=item Making a method work with either classes or instances + +=item Adding parameters to a method + +=item More interesting instances + +=item A horse of a different color + +=item Summary + +=back + +=item SEE ALSO + +=item COPYRIGHT + +=back + +=head2 perltoot - Tom's object-oriented tutorial for perl + +=over + +=item DESCRIPTION + +=item Creating a Class + +=over + +=item Object Representation + +=item Class Interface + +=item Constructors and Instance Methods + +=item Planning for the Future: Better Constructors + +=item Destructors + +=item Other Object Methods + +=back + +=item Class Data + +=over + +=item Accessing Class Data + +=item Debugging Methods + +=item Class Destructors + +=item Documenting the Interface + +=back + +=item Aggregation + +=item Inheritance + +=over + +=item Overridden Methods + +=item Multiple Inheritance + +=item UNIVERSAL: The Root of All Objects + +=back + +=item Alternate Object Representations + +=over + +=item Arrays as Objects + +=item Closures as Objects + +=back + +=item AUTOLOAD: Proxy Methods + +=over + +=item Autoloaded Data Methods + +=item Inherited Autoloaded Data Methods + +=back + +=item Metaclassical Tools + +=over + +=item Class::Struct + +=item Data Members as Variables + +=item NOTES + +=item Object Terminology + +=back + +=item SEE ALSO + +=item AUTHOR AND COPYRIGHT + +=item COPYRIGHT + +=over + +=item Acknowledgments + +=back + +=back + +=head2 perltootc - Tom's OO Tutorial for Class Data in Perl + +=over + +=item DESCRIPTION + +=item Class Data as Package Variables + +=over + +=item Putting All Your Eggs in One Basket + +=item Inheritance Concerns + +=item The Eponymous Meta-Object + +=item Indirect References to Class Data + +=item Monadic Classes + +=item Translucent Attributes + +=back + +=item Class Data as Lexical Variables + +=over + +=item Privacy and Responsibility + +=item File-Scoped Lexicals + +=item More Inheritance Concerns + +=item Locking the Door and Throwing Away the Key + +=item Translucency Revisited + +=back + +=item NOTES + +=item SEE ALSO + +=item AUTHOR AND COPYRIGHT + +=item ACKNOWLEDGEMENTS + +=item HISTORY + +=back + +=head2 perlobj - Perl objects + +=over + +=item DESCRIPTION + +=over + +=item An Object is Simply a Reference + +=item A Class is Simply a Package + +=item A Method is Simply a Subroutine + +=item Method Invocation + +=item WARNING + +=item Default UNIVERSAL methods + +isa(CLASS), can(METHOD), VERSION( [NEED] ) + +=item Destructors + +=item Summary + +=item Two-Phased Garbage Collection + +=back + +=item SEE ALSO + +=back + +=head2 perlbot - Bag'o Object Tricks (the BOT) + +=over + +=item DESCRIPTION + +=item OO SCALING TIPS + +=item INSTANCE VARIABLES + +=item INSTANCE VARIABLE INHERITANCE + +=item OBJECT RELATIONSHIPS + +=item OVERRIDING SUPERCLASS METHODS + +=item USING RELATIONSHIP WITH SDBM + +=item THINKING OF CODE REUSE + +=item CLASS CONTEXT AND THE OBJECT + +=item INHERITING A CONSTRUCTOR + +=item DELEGATION + +=back + +=head2 perltie - how to hide an object class in a simple variable + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item Tying Scalars + +TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this + +=item Tying Arrays + +TIEARRAY classname, LIST, FETCH this, index, STORE this, index, value, +DESTROY this + +=item Tying Hashes + +USER, HOME, CLOBBER, LIST, TIEHASH classname, LIST, FETCH this, key, STORE +this, key, value, DELETE this, key, CLEAR this, EXISTS this, key, FIRSTKEY +this, NEXTKEY this, lastkey, DESTROY this + +=item Tying FileHandles + +TIEHANDLE classname, LIST, WRITE this, LIST, PRINT this, LIST, PRINTF this, +LIST, READ this, LIST, READLINE this, GETC this, CLOSE this, DESTROY this + +=item The C Gotcha + +=back + +=item SEE ALSO + +=item BUGS + +=item AUTHOR + +=back + +=head2 perlipc - Perl interprocess communication (signals, fifos, pipes, +safe subprocesses, sockets, and semaphores) + +=over + +=item DESCRIPTION + +=item Signals + +=item Named Pipes + +=over + +=item WARNING + +=back + +=item Using open() for IPC + +=over + +=item Filehandles + +=item Background Processes + +=item Complete Dissociation of Child from Parent + +=item Safe Pipe Opens + +=item Bidirectional Communication with Another Process + +=item Bidirectional Communication with Yourself + +=back + +=item Sockets: Client/Server Communication + +=over + +=item Internet Line Terminators + +=item Internet TCP Clients and Servers + +=item Unix-Domain TCP Clients and Servers + +=back + +=item TCP Clients with IO::Socket + +=over + +=item A Simple Client + +C, C, C + +=item A Webget Client + +=item Interactive Client with IO::Socket + +=back + +=item TCP Servers with IO::Socket + +Proto, LocalPort, Listen, Reuse + +=item UDP: Message Passing + +=item SysV IPC + +=item NOTES + +=item BUGS + +=item AUTHOR + +=item SEE ALSO + +=back + +=head2 perlnumber - semantics of numbers and numeric operations in Perl + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item Storing numbers + +=item Numeric operators and numeric conversions + +=item Flavors of Perl numeric operations + +Arithmetic operators except, C, Arithmetic operators except, +C, Bitwise operators, C, Bitwise operators, C, Operators which expect an integer, Operators which expect a +string + +=item AUTHOR + +=item SEE ALSO + +=back + +=head2 perlfork - Perl's fork() emulation + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item Behavior of other Perl features in forked pseudo-processes + +$$ or $PROCESS_ID, %ENV, chdir() and all other builtins that accept +filenames, wait() and waitpid(), kill(), exec(), exit(), Open handles to +files, directories and network sockets + +=item Resource limits + +=item Killing the parent process + +=item Lifetime of the parent process and pseudo-processes + +=item CAVEATS AND LIMITATIONS + +BEGIN blocks, Open filehandles, Forking pipe open() not yet implemented, +Global state maintained by XSUBs, Interpreter embedded in larger +application, Thread-safety of extensions + +=back + +=item BUGS + +=item AUTHOR + +=item SEE ALSO + +=back + +=head2 perlthrtut - tutorial on threads in Perl + +=over + +=item DESCRIPTION + +=item What Is A Thread Anyway? + +=item Threaded Program Models + +=over + +=item Boss/Worker + +=item Work Crew + +=item Pipeline + +=back + +=item Native threads + +=item What kind of threads are perl threads? + +=item Threadsafe Modules + +=item Thread Basics + +=over + +=item Basic Thread Support + +=item Creating Threads + +=item Giving up control + +=item Waiting For A Thread To Exit + +=item Errors In Threads + +=item Ignoring A Thread + +=back + +=item Threads And Data + +=over + +=item Shared And Unshared Data + +=item Thread Pitfall: Races + +=item Controlling access: lock() + +=item Thread Pitfall: Deadlocks + +=item Queues: Passing Data Around + +=back + +=item Threads And Code + +=over + +=item Semaphores: Synchronizing Data Access + +Basic semaphores, Advanced Semaphores + +=item Attributes: Restricting Access To Subroutines + +=item Subroutine Locks + +=item Methods + +=item Locking A Subroutine + +=back + +=item General Thread Utility Routines + +=over + +=item What Thread Am I In? + +=item Thread IDs + +=item Are These Threads The Same? + +=item What Threads Are Running? + +=back + +=item A Complete Example + +=item Conclusion + +=item Bibliography + +=over + +=item Introductory Texts + +=item OS-Related References + +=item Other References + +=back + +=item Acknowledgements + +=item AUTHOR + +=item Copyrights + +=back + +=head2 perldiag - various Perl diagnostics + +=over + +=item DESCRIPTION + +=back + +=head2 perlfaq1 - General Questions About Perl ($Revision: 1.23 $, $Date: +1999/05/23 16:08:30 $) + +=over + +=item DESCRIPTION + +=over + +=item What is Perl? + +=item Who supports Perl? Who develops it? Why is it free? + +=item Which version of Perl should I use? + +=item What are perl4 and perl5? + +=item What is perl6? + +=item How stable is Perl? + +=item Is Perl difficult to learn? + +=item How does Perl compare with other languages like Java, Python, REXX, +Scheme, or Tcl? + +=item Can I do [task] in Perl? + +=item When shouldn't I program in Perl? + +=item What's the difference between "perl" and "Perl"? + +=item Is it a Perl program or a Perl script? + +=item What is a JAPH? + +=item Where can I get a list of Larry Wall witticisms? + +=item How can I convince my sysadmin/supervisor/employees to use version +(5/5.005/Perl instead of some other language)? + +=back + +=item AUTHOR AND COPYRIGHT + +=back + +=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.32 $, +$Date: 1999/10/14 18:46:09 $) + +=over + +=item DESCRIPTION + +=over + +=item What machines support Perl? Where do I get it? + +=item How can I get a binary version of Perl? + +=item I don't have a C compiler on my system. How can I compile perl? + +=item I copied the Perl binary from one machine to another, but scripts +don't work. + +=item I grabbed the sources and tried to compile but gdbm/dynamic +loading/malloc/linking/... failed. How do I make it work? + +=item What modules and extensions are available for Perl? What is CPAN? +What does CPAN/src/... mean? + +=item Is there an ISO or ANSI certified version of Perl? + +=item Where can I get information on Perl? + +=item What are the Perl newsgroups on Usenet? Where do I post questions? + +=item Where should I post source code? + +=item Perl Books + +References, Tutorials, Task-Oriented, Special Topics + +=item Perl in Magazines + +=item Perl on the Net: FTP and WWW Access + +=item What mailing lists are there for Perl? + +=item Archives of comp.lang.perl.misc + +=item Where can I buy a commercial version of Perl? + +=item Where do I send bug reports? + +=item What is perl.com? Perl Mongers? pm.org? perl.org? + +=back + +=item AUTHOR AND COPYRIGHT + +=back + +=head2 perlfaq3 - Programming Tools ($Revision: 1.38 $, $Date: 1999/05/23 +16:08:30 $) + +=over + +=item DESCRIPTION + +=over + +=item How do I do (anything)? + +=item How can I use Perl interactively? + +=item Is there a Perl shell? + +=item How do I debug my Perl programs? + +=item How do I profile my Perl programs? + +=item How do I cross-reference my Perl programs? + +=item Is there a pretty-printer (formatter) for Perl? + +=item Is there a ctags for Perl? + +=item Is there an IDE or Windows Perl Editor? + +=item Where can I get Perl macros for vi? + +=item Where can I get perl-mode for emacs? + +=item How can I use curses with Perl? + +=item How can I use X or Tk with Perl? + +=item How can I generate simple menus without using CGI or Tk? + +=item What is undump? + +=item How can I make my Perl program run faster? + +=item How can I make my Perl program take less memory? + +=item Is it unsafe to return a pointer to local data? + +=item How can I free an array or hash so my program shrinks? + +=item How can I make my CGI script more efficient? + +=item How can I hide the source for my Perl program? + +=item How can I compile my Perl program into byte code or C? + +=item How can I compile Perl into Java? + +=item How can I get C<#!perl> to work on [MS-DOS,NT,...]? + +=item Can I write useful Perl programs on the command line? + +=item Why don't Perl one-liners work on my DOS/Mac/VMS system? + +=item Where can I learn about CGI or Web programming in Perl? + +=item Where can I learn about object-oriented Perl programming? + +=item Where can I learn about linking C with Perl? [h2xs, xsubpp] + +=item I've read perlembed, perlguts, etc., but I can't embed perl in +my C program, what am I doing wrong? + +=item When I tried to run my script, I got this message. What does it +mean? + +=item What's MakeMaker? + +=back + +=item AUTHOR AND COPYRIGHT + +=back + +=head2 perlfaq4 - Data Manipulation ($Revision: 1.49 $, $Date: 1999/05/23 +20:37:49 $) + +=over + +=item DESCRIPTION + +=item Data: Numbers + +=over + +=item Why am I getting long decimals (eg, 19.9499999999999) instead of the +numbers I should be getting (eg, 19.95)? + +=item Why isn't my octal data interpreted correctly? + +=item Does Perl have a round() function? What about ceil() and floor()? +Trig functions? + +=item How do I convert bits into ints? + +=item Why doesn't & work the way I want it to? + +=item How do I multiply matrices? + +=item How do I perform an operation on a series of integers? + +=item How can I output Roman numerals? + +=item Why aren't my random numbers random? + +=back + +=item Data: Dates + +=over + +=item How do I find the week-of-the-year/day-of-the-year? + +=item How do I find the current century or millennium? + +=item How can I compare two dates and find the difference? + +=item How can I take a string and turn it into epoch seconds? + +=item How can I find the Julian Day? + +=item How do I find yesterday's date? + +=item Does Perl have a Year 2000 problem? Is Perl Y2K compliant? + +=back + +=item Data: Strings + +=over + +=item How do I validate input? + +=item How do I unescape a string? + +=item How do I remove consecutive pairs of characters? + +=item How do I expand function calls in a string? + +=item How do I find matching/nesting anything? + +=item How do I reverse a string? + +=item How do I expand tabs in a string? + +=item How do I reformat a paragraph? + +=item How can I access/change the first N letters of a string? + +=item How do I change the Nth occurrence of something? + +=item How can I count the number of occurrences of a substring within a +string? + +=item How do I capitalize all the words on one line? + +=item How can I split a [character] delimited string except when inside +[character]? (Comma-separated files) + +=item How do I strip blank space from the beginning/end of a string? + +=item How do I pad a string with blanks or pad a number with zeroes? + +=item How do I extract selected columns from a string? + +=item How do I find the soundex value of a string? + +=item How can I expand variables in text strings? + +=item What's wrong with always quoting "$vars"? + +=item Why don't my <? + +=item Is there a leak/bug in glob()? + +=item How can I open a file with a leading ">" or trailing blanks? + +=item How can I reliably rename a file? + +=item How can I lock a file? + +=item Why can't I just open(FH, ">file.lock")? + +=item I still don't get locking. I just want to increment the number in +the file. How can I do this? + +=item How do I randomly update a binary file? + +=item How do I get a file's timestamp in perl? + +=item How do I set a file's timestamp in perl? + +=item How do I print to more than one file at once? + +=item How can I read in an entire file all at once? + +=item How can I read in a file by paragraphs? + +=item How can I read a single character from a file? From the keyboard? + +=item How can I tell whether there's a character waiting on a filehandle? + +=item How do I do a C in perl? + +=item How do I dup() a filehandle in Perl? + +=item How do I close a file descriptor by number? + +=item Why can't I use "C:\temp\foo" in DOS paths? What doesn't +`C:\temp\foo.exe` work? + +=item Why doesn't glob("*.*") get all the files? + +=item Why does Perl let me delete read-only files? Why does C<-i> clobber +protected files? Isn't this a bug in Perl? + +=item How do I select a random line from a file? + +=item Why do I get weird spaces when I print an array of lines? + +=back + +=item AUTHOR AND COPYRIGHT + +=back + +=head2 perlfaq6 - Regexes ($Revision: 1.27 $, $Date: 1999/05/23 16:08:30 $) + +=over + +=item DESCRIPTION + +=over + +=item How can I hope to use regular expressions without creating illegible +and unmaintainable code? + +Comments Outside the Regex, Comments Inside the Regex, Different Delimiters + +=item I'm having trouble matching over more than one line. What's wrong? + +=item How can I pull out lines between two patterns that are themselves on +different lines? + +=item I put a regular expression into $/ but it didn't work. What's wrong? + +=item How do I substitute case insensitively on the LHS, but preserving +case on the RHS? + +=item How can I make C<\w> match national character sets? + +=item How can I match a locale-smart version of C? + +=item How can I quote a variable to use in a regex? + +=item What is C really for? + +=item How do I use a regular expression to strip C style comments from a +file? + +=item Can I use Perl regular expressions to match balanced text? + +=item What does it mean that regexes are greedy? How can I get around it? + +=item How do I process each word on each line? + +=item How can I print out a word-frequency or line-frequency summary? + +=item How can I do approximate matching? + +=item How do I efficiently match many regular expressions at once? + +=item Why don't word-boundary searches with C<\b> work for me? + +=item Why does using $&, $`, or $' slow my program down? + +=item What good is C<\G> in a regular expression? + +=item Are Perl regexes DFAs or NFAs? Are they POSIX compliant? + +=item What's wrong with using grep or map in a void context? + +=item How can I match strings with multibyte characters? + +=item How do I match a pattern that is supplied by the user? + +=back + +=item AUTHOR AND COPYRIGHT + +=back + +=head2 perlfaq7 - Perl Language Issues ($Revision: 1.28 $, $Date: +1999/05/23 20:36:18 $) + +=over + +=item DESCRIPTION + +=over + +=item Can I get a BNF/yacc/RE for the Perl language? + +=item What are all these $@%&* punctuation signs, and how do I know when to +use them? + +=item Do I always/never have to quote my strings or use semicolons and +commas? + +=item How do I skip some return values? =item How do I temporarily block warnings? @@ -1129,634 +3320,542 @@ CGI script to do bad things? =back -=head2 perldelta - what's new for perl v5.6.0 +=head2 perlcompile - Introduction to the Perl Compiler-Translator =over =item DESCRIPTION -=item Core Enhancements - =over -=item Interpreter cloning, threads, and concurrency - -=item Lexically scoped warning categories - -=item Unicode and UTF-8 support - -=item Support for interpolating named characters - -=item "our" declarations - -=item Support for strings represented as a vector of ordinals - -=item Improved Perl version numbering system - -=item New syntax for declaring subroutine attributes - -=item File and directory handles can be autovivified - -=item open() with more than two arguments - -=item 64-bit support - -=item Large file support - -=item Long doubles - -=item "more bits" - -=item Enhanced support for sort() subroutines - -=item C allowed - -=item File globbing implemented internally - -Support for CHECK blocks - -=item POSIX character class syntax [: :] supported - -Better pseudo-random number generator - -=item Improved C operator - -Better worst-case behavior of hashes +=item Layout -=item pack() format 'Z' supported +B::Bytecode, B::C, B::CC, B::Lint, B::Deparse, B::Xref -=item pack() format modifier '!' supported +=back -=item pack() and unpack() support counted strings +=item Using The Back Ends -=item Comments in pack() templates +=over -=item Weak references +=item The Cross Referencing Back End -=item Binary numbers supported +i, &, s, r -=item Lvalue subroutines +=item The Decompiling Back End -=item Some arrows may be omitted in calls through references +=item The Lint Back End -=item Boolean assignment operators are legal lvalues +=item The Simple C Back End -=item exists() is supported on subroutine names +=item The Bytecode Back End -=item exists() and delete() are supported on array elements +=item The Optimized C Back End -=item Pseudo-hashes work better +B, O, B::Asmdata, B::Assembler, B::Bblock, B::Bytecode, B::C, B::CC, +B::Debug, B::Deparse, B::Disassembler, B::Lint, B::Showlex, B::Stackobj, +B::Stash, B::Terse, B::Xref -=item Automatic flushing of output buffers +=back -=item Better diagnostics on meaningless filehandle operations +=item KNOWN PROBLEMS -=item Where possible, buffered data discarded from duped input filehandle +=item AUTHOR -=item eof() has the same old magic as <> +=back -=item binmode() can be used to set :crlf and :raw modes +=head2 perlembed - how to embed perl in your C program -=item C<-T> filetest recognizes UTF-8 encoded files as "text" +=over -=item system(), backticks and pipe open now reflect exec() failure +=item DESCRIPTION -=item Improved diagnostics +=over -=item Diagnostics follow STDERR +=item PREAMBLE -More consistent close-on-exec behavior +B, B, B, B, B -=item syswrite() ease-of-use +=item ROADMAP -=item Better syntax checks on parenthesized unary operators +=item Compiling your C program -=item Bit operators support full native integer width +=item Adding a Perl interpreter to your C program -=item Improved security features +=item Calling a Perl subroutine from your C program -More functional bareword prototype (*) +=item Evaluating a Perl statement from your C program -=item C and C may be overridden +=item Performing Perl pattern matches and substitutions from your C program -=item $^X variables may now have names longer than one character +=item Fiddling with the Perl stack from your C program -=item New variable $^C reflects C<-c> switch +=item Maintaining a persistent interpreter -=item New variable $^V contains Perl version as a string +=item Maintaining multiple interpreter instances -=item Optional Y2K warnings +=item Using Perl modules, which themselves use C libraries, from your C +program =back -=item Modules and Pragmata - -=over - -=item Modules - -attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, -DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, -Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, -File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, -Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, -podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, -pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, -Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters +=item Embedding Perl under Windows -=item Pragmata +=item MORAL -=back +=item AUTHOR -=item Utility Changes +=item COPYRIGHT -=over +=back -=item dprofpp +=head2 perldebguts - Guts of Perl debugging -=item find2perl +=over -=item h2xs +=item DESCRIPTION -=item perlcc +=item Debugger Internals -=item perldoc +=over -=item The Perl Debugger +=item Writing Your Own Debugger =back -=item Improved Documentation - -perlapi.pod, perlboot.pod, perlcompile.pod, perldbmfilter.pod, -perldebug.pod, perldebguts.pod, perlfork.pod, perlfilter.pod, perlhack.pod, -perlintern.pod, perllexwarn.pod, perlnumber.pod, perlopentut.pod, -perlreftut.pod, perltootc.pod, perltodo.pod, perlunicode.pod +=item Frame Listing Output Examples -=item Performance enhancements +=item Debugging regular expressions =over -=item Simple sort() using { $a <=> $b } and the like are optimized +=item Compile-time output -=item Optimized assignments to lexical variables +C I C I, C I C +I, C, C, C +I, C, C, C, C, C, C, +C -=item Faster subroutine calls +=item Types of nodes -delete(), each(), values() and hash iteration are faster +=item Run-time output =back -=item Installation and Configuration Improvements +=item Debugging Perl memory usage =over -=item -Dusethreads means something different - -=item New Configure flags +=item Using C<$ENV{PERL_DEBUG_MSTATS}> -=item Threadedness and 64-bitness now more daring +C, Free/Used, C, C, C, C, C -=item Long Doubles +=item Example of using B<-DL> switch -=item -Dusemorebits +C<717>, C<002>, C<054>, C<602>, C<702>, C<704> -=item -Duselargefiles +=item B<-DL> details -=item installusrbinperl +C, C, C -=item SOCKS support +=item Limitations of B<-DL> statistics -=item C<-A> flag +=back -=item Enhanced Installation Directories +=item SEE ALSO =back -=item Platform specific changes +=head2 perlxstut, perlXStut - Tutorial for writing XSUBs =over -=item Supported platforms +=item DESCRIPTION -=item DOS +=item SPECIAL NOTES -=item OS390 (OpenEdition MVS) +=over -=item VMS +=item make -=item Win32 +=item Version caveat + +=item Dynamic Loading versus Static Loading =back -=item Significant bug fixes +=item TUTORIAL =over -=item on empty files +=item EXAMPLE 1 -=item C improvements +=item EXAMPLE 2 -=item All compilation errors are true errors +=item What has gone on? -=item Implicitly closed filehandles are safer +=item Writing good test scripts -=item Behavior of list slices is more consistent +=item EXAMPLE 3 -=item C<(\$)> prototype and C<$foo{a}> +=item What's new here? -=item C and AUTOLOAD +=item Input and Output Parameters -=item C<-bareword> allowed under C +=item The XSUBPP Program -=item Failures in DESTROY() +=item The TYPEMAP file -=item Locale bugs fixed +=item Warning about Output Arguments -=item Memory leaks +=item EXAMPLE 4 -=item Spurious subroutine stubs after failed subroutine calls +=item What has happened here? -=item Taint failures under C<-U> +=item Anatomy of .xs file -=item END blocks and the C<-c> switch +=item Getting the fat out of XSUBs -=item Potential to leak DATA filehandles +=item More about XSUB arguments -=back +=item The Argument Stack -=item New or Changed Diagnostics +=item Extending your Extension -"%s" variable %s masks earlier declaration in same %s, "my sub" not yet -implemented, "our" variable %s redeclared, '!' allowed only after types %s, -/ cannot take a count, / must be followed by a, A or Z, / must be followed -by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape -\\%c passed through, /%s/: Unrecognized escape \\%c in character class -passed through, /%s/ should probably be written as "%s", %s() called too -early to check prototype, %s argument is not a HASH or ARRAY element, %s -argument is not a HASH or ARRAY element or slice, %s argument is not a -subroutine name, %s package attribute may clash with future reserved word: -%s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled -substitution pattern, Bad realloc() ignored, Bareword found in conditional, -Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector -size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check -filesystem of script "%s", Can't declare class for non-scalar %s in "%s", -Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, -Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't -remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't -weaken a nonreference, Character class [:%s:] unknown, Character class -syntax [%s] belongs inside character classes, Constant is not %s reference, -constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, -defined(%hash) is deprecated, Did not produce a valid header, (Did you mean -"local" instead of "our"?), Document contains no data, entering effective -%s failed, false [] range "%s" in regexp, Filehandle %s opened only for -output, flock() on closed filehandle %s, Global symbol "%s" requires -explicit package name, Hexadecimal number > 0xffffffff non-portable, -Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: -|%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal -number of bits in vec, Integer overflow in %s number, Invalid %s attribute: -%s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid -separator character %s in attribute list, Invalid separator character %s in -subroutine attribute list, leaving effective %s failed, Lvalue subs -returning %s not implemented yet, Method %s not permitted, Missing -%sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", -No %s specified for -%c, No package name allowed for variable %s in "our", -No space allowed after -%c, no UTC offset information; assuming local time -is UTC, Octal number > 037777777777 non-portable, panic: del_backref, -panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing -around "%s" list, Possible Y2K bug: %s, pragma "attrs" is deprecated, use -"sub NAME : ATTRS" instead, Premature end of script headers, Repeat count -in pack overflows, Repeat count in unpack overflows, realloc() of freed -memory ignored, Reference is already weak, setpgrp can't take arguments, -Strange *+?{} on zero-length expression, switching effective %s is not -implemented, This Perl can't reset CRTL environ elements (%s), This Perl -can't set CRTL environ elements (%s=%s), Too late to run %s block, Unknown -open() mode '%s', Unknown process %x sent message to prime_env_iter: %s, -Unrecognized escape \\%c passed through, Unterminated attribute parameter -in attribute list, Unterminated attribute list, Unterminated attribute -parameter in subroutine attribute list, Unterminated subroutine attribute -list, Value of CLI symbol "%s" too long, Version number must be a constant -number +=item Documenting your Extension -=item New tests +=item Installing your Extension -=item Incompatible Changes +=item EXAMPLE 5 -=over +=item New Things in this Example -=item Perl Source Incompatibilities +=item EXAMPLE 6 -CHECK is a new keyword, Treatment of list slices of undef has changed +=item New Things in this Example -=item Format of $English::PERL_VERSION is different +=item EXAMPLE 7 (Coming Soon) -Literals of the form C<1.2.3> parse differently, Possibly changed -pseudo-random number generator, Hashing function for hash keys has changed, -C fails on read only values, Close-on-exec bit may be set on pipe -and socket handles, Writing C<"$$1"> to mean C<"${$}1"> is unsupported, -delete(), values() and C<\(%h)> operate on aliases to values, not copies, -vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, Text of some diagnostic -output has changed, C<%@> has been removed, Parenthesized not() behaves -like a list operator, Semantics of bareword prototype C<(*)> have changed +=item EXAMPLE 8 (Coming Soon) -=item Semantics of bit operators may have changed on 64-bit platforms +=item EXAMPLE 9 (Coming Soon) -=item More builtins taint their results +=item Troubleshooting these Examples -=item C Source Incompatibilities +=back -C, C, C +=item See also -=item Compatible C Source API Changes +=item Author -C is now C +=over -=item Binary Incompatibilities +=item Last Changed =back -=item Known Problems +=back + +=head2 perlxs - XS language reference manual =over -=item Thread test failures +=item DESCRIPTION -=item EBCDIC platforms not supported +=over -=item In 64-bit HP-UX the lib/io_multihomed test may hang +=item Introduction -=item NEXTSTEP 3.3 POSIX test failure +=item On The Road -=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with -gcc +=item The Anatomy of an XSUB -=item UNICOS/mk CC failures during Configure run +=item The Argument Stack -=item Arrow operator and arrays +=item The RETVAL Variable -=item Windows 2000 +=item The MODULE Keyword -=item Experimental features +=item The PACKAGE Keyword -Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The -pseudo-hash data type, The Compiler suite, Internal implementation of file -globbing, The DB module, The regular expression constructs C<(?{ code })> -and C<(??{ code })> +=item The PREFIX Keyword -=back +=item The OUTPUT: Keyword -=item Obsolete Diagnostics +=item The CODE: Keyword + +=item The INIT: Keyword + +=item The NO_INIT Keyword + +=item Initializing Function Parameters + +=item Default Parameter Values + +=item The PREINIT: Keyword + +=item The SCOPE: Keyword + +=item The INPUT: Keyword + +=item Variable-length Parameter Lists + +=item The C_ARGS: Keyword + +=item The PPCODE: Keyword + +=item Returning Undef And Empty Lists + +=item The REQUIRE: Keyword -Character class syntax [: :] is reserved for future extensions, Ill-formed -logical name |%s| in prime_env_iter, Probable precedence problem on %s, -regexp too big, Use of "$$" to mean "${$}" is deprecated +=item The CLEANUP: Keyword -=item Reporting Bugs +=item The BOOT: Keyword -=item SEE ALSO +=item The VERSIONCHECK: Keyword -=item HISTORY +=item The PROTOTYPES: Keyword -=back +=item The PROTOTYPE: Keyword -=head2 perldata - Perl data types +=item The ALIAS: Keyword -=over +=item The INTERFACE: Keyword -=item DESCRIPTION +=item The INTERFACE_MACRO: Keyword -=over +=item The INCLUDE: Keyword -=item Variable names +=item The CASE: Keyword -=item Context +=item The & Unary Operator -=item Scalar values +=item Inserting Comments and C Preprocessor Directives -=item Scalar value constructors +=item Using XS With C++ -=item List value constructors +=item Interface Strategy -=item Slices +=item Perl Objects And C Structures -=item Typeglobs and Filehandles +=item The Typemap =back -=item SEE ALSO +=item EXAMPLES + +=item XS VERSION + +=item AUTHOR =back -=head2 perlsyn - Perl syntax +=head2 perlguts - Introduction to the Perl API =over =item DESCRIPTION -=over +=item Variables -=item Declarations +=over -=item Simple statements +=item Datatypes -=item Compound statements +=item What is an "IV"? -=item Loop Control +=item Working with SVs -=item For Loops +=item What's Really Stored in an SV? -=item Foreach Loops +=item Working with AVs -=item Basic BLOCKs and Switch Statements +=item Working with HVs -=item Goto +=item Hash API Extensions -=item PODs: Embedded Documentation +=item References -=item Plain Old Comments (Not!) +=item Blessed References and Class Objects -=back +=item Creating New Variables -=back +=item Reference Counts and Mortality -=head2 perlop - Perl operators and precedence +=item Stashes and Globs -=over +=item Double-Typed SVs -=item SYNOPSIS +=item Magic Variables -=item DESCRIPTION +=item Assigning Magic -=over +=item Magic Virtual Tables -=item Terms and List Operators (Leftward) +=item Finding Magic -=item The Arrow Operator +=item Understanding the Magic of Tied Hashes and Arrays -=item Auto-increment and Auto-decrement +=item Localizing changes -=item Exponentiation +C, C, C, C, +C, C, C, C, C, C, C, C, C, C, +C, C, C, C, C, C, C, +C -=item Symbolic Unary Operators +=back -=item Binding Operators +=item Subroutines -=item Multiplicative Operators +=over -=item Additive Operators +=item XSUBs and the Argument Stack -=item Shift Operators +=item Calling Perl Routines from within C Programs -=item Named Unary Operators +=item Memory Allocation -=item Relational Operators +=item PerlIO -=item Equality Operators +=item Putting a C value on Perl stack -=item Bitwise And +=item Scratchpads -=item Bitwise Or and Exclusive Or +=item Scratchpads and recursion -=item C-style Logical And +=back -=item C-style Logical Or +=item Compiled code -=item Range Operators +=over -=item Conditional Operator +=item Code tree -=item Assignment Operators +=item Examining the tree -=item Comma Operator +=item Compile pass 1: check routines -=item List Operators (Rightward) +=item Compile pass 1a: constant folding -=item Logical Not +=item Compile pass 2: context propagation -=item Logical And +=item Compile pass 3: peephole optimization -=item Logical or and Exclusive Or +=back -=item C Operators Missing From Perl +=item How multiple interpreters and concurrency are supported -unary &, unary *, (TYPE) +=over -=item Quote and Quote-like Operators +=item Background and PERL_IMPLICIT_CONTEXT -=item Regexp Quote-Like Operators +=item How do I use all this in extensions? -?PATTERN?, m/PATTERN/cgimosx, /PATTERN/cgimosx, q/STRING/, C<'STRING'>, -qq/STRING/, "STRING", qr/STRING/imosx, qx/STRING/, `STRING`, qw/STRING/, -s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cds, -y/SEARCHLIST/REPLACEMENTLIST/cds +=item Future Plans and PERL_IMPLICIT_SYS -=item Gory details of parsing quoted constructs +=back -Finding the end, Removal of backslashes before delimiters, Interpolation, -C<<<'EOF'>, C, C, C, C, C<''>, C, C<"">, -C<``>, C, C, C<< >>, C, C, C, -C,, Interpolation of regular expressions, Optimization of -regular expressions +=item AUTHORS -=item I/O Operators +=item SEE ALSO -=item Constant Folding +=back -=item Bitwise String Operators +=head2 perlcall - Perl calling conventions from C -=item Integer Arithmetic +=over -=item Floating-point Arithmetic +=item DESCRIPTION -=item Bigger Numbers +An Error Handler, An Event Driven Program -=back +=item THE CALL_ FUNCTIONS -=back +call_sv, call_pv, call_method, call_argv -=head2 perlre - Perl regular expressions +=item FLAG VALUES =over -=item DESCRIPTION +=item G_VOID -i, m, s, x +=item G_SCALAR -=over +=item G_ARRAY -=item Regular Expressions +=item G_DISCARD -cntrl, graph, print, punct, xdigit +=item G_NOARGS -=item Extended Patterns +=item G_EVAL -C<(?#text)>, C<(?imsx-imsx)>, C<(?:pattern)>, C<(?imsx-imsx:pattern)>, -C<(?=pattern)>, C<(?!pattern)>, C<(?<=pattern)>, C<(?, C<(?{ -code })>, C<(??{ code })>, C<< (?>pattern) >>, -C<(?(condition)yes-pattern|no-pattern)>, C<(?(condition)yes-pattern)> +=item G_KEEPERR -=item Backtracking +=item Determining the Context -=item Version 8 Regular Expressions +=back -=item Warning on \1 vs $1 +=item KNOWN PROBLEMS -=item Repeated patterns matching zero-length substring +=item EXAMPLES -=item Combining pieces together +=over -C, C, C, C, C, C, -C, C, C, C, C, C<< (?>S) >>, C<(?=S)>, C<(?<=S)>, -C<(?!S)>, C<(?, C<(??{ EXPR })>, -C<(?(condition)yes-pattern|no-pattern)> +=item No Parameters, Nothing returned -=item Creating custom RE engines +=item Passing Parameters -=back +=item Returning a Scalar -=item BUGS +=item Returning a list of values -=item SEE ALSO +=item Returning a list in a scalar context -=back +=item Returning Data from Perl via the parameter list -=head2 perlrun - how to execute the Perl interpreter +=item Using G_EVAL -=over +=item Using G_KEEPERR -=item SYNOPSIS +=item Using call_sv -=item DESCRIPTION +=item Using call_argv -=over +=item Using call_method -=item #! and quoting on non-Unix systems +=item Using GIMME_V -OS/2, MS-DOS, Win95/NT, Macintosh, VMS +=item Using Perl to dispose of temporaries -=item Location of Perl +=item Strategies for storing Callback Context Information -=item Command Switches +1. Ignore the problem - Allow only 1 callback, 2. Create a sequence of +callbacks - hard wired limit, 3. Use a parameter to map to the Perl +callback -B<-0>[I], B<-a>, B<-C>, B<-c>, B<-d>, B<-d:>I, -B<-D>I, B<-D>I, B<-e> I, B<-F>I, -B<-h>, B<-i>[I], B<-I>I, B<-l>[I], -B<-m>[B<->]I, B<-M>[B<->]I, B<-M>[B<->]I<'module ...'>, -B<-[mM]>[B<->]I, B<-n>, B<-p>, B<-P>, B<-s>, B<-S>, -B<-T>, B<-u>, B<-U>, B<-v>, B<-V>, B<-V:>I, B<-w>, B<-W>, B<-X>, -B<-x> I +=item Alternate Stack Manipulation + +=item Creating and calling an anonymous subroutine in C =back -=item ENVIRONMENT +=item SEE ALSO -HOME, LOGDIR, PATH, PERL5LIB, PERL5OPT, PERLLIB, PERL5DB, PERL5SHELL -(specific to the Win32 port), PERL_DEBUG_MSTATS, PERL_DESTRUCT_LEVEL, -PERL_ROOT (specific to the VMS port), SYS$LOGIN (specific to the VMS port) +=item AUTHOR + +=item DATE =back -=head2 perlfunc - Perl builtin functions +=head2 perlutil - utilities packaged with the Perl distribution =over @@ -1764,152 +3863,61 @@ PERL_ROOT (specific to the VMS port), SYS$LOGIN (specific to the VMS port) =over -=item Perl Functions by Category +=item DOCUMENTATION + +L, L and L, +L and L, L, +L, L, L, +L + +=item CONVERTORS -Functions for SCALARs or strings, Regular expressions and pattern matching, -Numeric functions, Functions for real @ARRAYs, Functions for list data, -Functions for real %HASHes, Input and output functions, Functions for fixed -length data or records, Functions for filehandles, files, or directories, -Keywords related to the control flow of your perl program, Keywords related -to scoping, Miscellaneous functions, Functions for processes and process -groups, Keywords related to perl modules, Keywords related to classes and -object-orientedness, Low-level socket functions, System V interprocess -communication functions, Fetching user and group info, Fetching network -info, Time-related functions, Functions new in perl5, Functions obsoleted -in perl5 +L, L, L -=item Portability +=item Development -=item Alphabetical Listing of Perl Functions +L, L, L and L, +L, L, L -I<-X> FILEHANDLE, I<-X> EXPR, I<-X>, abs VALUE, abs, accept -NEWSOCKET,GENERICSOCKET, alarm SECONDS, alarm, atan2 Y,X, bind SOCKET,NAME, -binmode FILEHANDLE, DISCIPLINE, binmode FILEHANDLE, bless REF,CLASSNAME, -bless REF, caller EXPR, caller, chdir EXPR, chmod LIST, chomp VARIABLE, -chomp LIST, chomp, chop VARIABLE, chop LIST, chop, chown LIST, chr NUMBER, -chr, chroot FILENAME, chroot, close FILEHANDLE, close, closedir DIRHANDLE, -connect SOCKET,NAME, continue BLOCK, cos EXPR, crypt PLAINTEXT,SALT, -dbmclose HASH, dbmopen HASH,DBNAME,MASK, defined EXPR, defined, delete -EXPR, die LIST, do BLOCK, do SUBROUTINE(LIST), do EXPR, dump LABEL, dump, -each HASH, eof FILEHANDLE, eof (), eof, eval EXPR, eval BLOCK, exec LIST, -exec PROGRAM LIST, exists EXPR, exit EXPR, exp EXPR, exp, fcntl -FILEHANDLE,FUNCTION,SCALAR, fileno FILEHANDLE, flock FILEHANDLE,OPERATION, -fork, format, formline PICTURE,LIST, getc FILEHANDLE, getc, getlogin, -getpeername SOCKET, getpgrp PID, getppid, getpriority WHICH,WHO, getpwnam -NAME, getgrnam NAME, gethostbyname NAME, getnetbyname NAME, getprotobyname -NAME, getpwuid UID, getgrgid GID, getservbyname NAME,PROTO, gethostbyaddr -ADDR,ADDRTYPE, getnetbyaddr ADDR,ADDRTYPE, getprotobynumber NUMBER, -getservbyport PORT,PROTO, getpwent, getgrent, gethostent, getnetent, -getprotoent, getservent, setpwent, setgrent, sethostent STAYOPEN, setnetent -STAYOPEN, setprotoent STAYOPEN, setservent STAYOPEN, endpwent, endgrent, -endhostent, endnetent, endprotoent, endservent, getsockname SOCKET, -getsockopt SOCKET,LEVEL,OPTNAME, glob EXPR, glob, gmtime EXPR, goto LABEL, -goto EXPR, goto &NAME, grep BLOCK LIST, grep EXPR,LIST, hex EXPR, hex, -import, index STR,SUBSTR,POSITION, index STR,SUBSTR, int EXPR, int, ioctl -FILEHANDLE,FUNCTION,SCALAR, join EXPR,LIST, keys HASH, kill SIGNAL, LIST, -last LABEL, last, lc EXPR, lc, lcfirst EXPR, lcfirst, length EXPR, length, -link OLDFILE,NEWFILE, listen SOCKET,QUEUESIZE, local EXPR, localtime EXPR, -lock, log EXPR, log, lstat FILEHANDLE, lstat EXPR, lstat, m//, map BLOCK -LIST, map EXPR,LIST, mkdir FILENAME,MASK, mkdir FILENAME, msgctl -ID,CMD,ARG, msgget KEY,FLAGS, msgrcv ID,VAR,SIZE,TYPE,FLAGS, msgsnd -ID,MSG,FLAGS, my EXPR, my EXPR : ATTRIBUTES, next LABEL, next, no Module -LIST, oct EXPR, oct, open FILEHANDLE,MODE,LIST, open FILEHANDLE,EXPR, open -FILEHANDLE, opendir DIRHANDLE,EXPR, ord EXPR, ord, our EXPR, pack -TEMPLATE,LIST, package, package NAMESPACE, pipe READHANDLE,WRITEHANDLE, pop -ARRAY, pop, pos SCALAR, pos, print FILEHANDLE LIST, print LIST, print, -printf FILEHANDLE FORMAT, LIST, printf FORMAT, LIST, prototype FUNCTION, -push ARRAY,LIST, q/STRING/, qq/STRING/, qr/STRING/, qx/STRING/, qw/STRING/, -quotemeta EXPR, quotemeta, rand EXPR, rand, read -FILEHANDLE,SCALAR,LENGTH,OFFSET, read FILEHANDLE,SCALAR,LENGTH, readdir -DIRHANDLE, readline EXPR, readlink EXPR, readlink, readpipe EXPR, recv -SOCKET,SCALAR,LENGTH,FLAGS, redo LABEL, redo, ref EXPR, ref, rename -OLDNAME,NEWNAME, require VERSION, require EXPR, require, reset EXPR, reset, -return EXPR, return, reverse LIST, rewinddir DIRHANDLE, rindex -STR,SUBSTR,POSITION, rindex STR,SUBSTR, rmdir FILENAME, rmdir, s///, scalar -EXPR, seek FILEHANDLE,POSITION,WHENCE, seekdir DIRHANDLE,POS, select -FILEHANDLE, select, select RBITS,WBITS,EBITS,TIMEOUT, semctl -ID,SEMNUM,CMD,ARG, semget KEY,NSEMS,FLAGS, semop KEY,OPSTRING, send -SOCKET,MSG,FLAGS,TO, send SOCKET,MSG,FLAGS, setpgrp PID,PGRP, setpriority -WHICH,WHO,PRIORITY, setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL, shift ARRAY, -shift, shmctl ID,CMD,ARG, shmget KEY,SIZE,FLAGS, shmread ID,VAR,POS,SIZE, -shmwrite ID,STRING,POS,SIZE, shutdown SOCKET,HOW, sin EXPR, sin, sleep -EXPR, sleep, socket SOCKET,DOMAIN,TYPE,PROTOCOL, socketpair -SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, sort SUBNAME LIST, sort BLOCK LIST, -sort LIST, splice ARRAY,OFFSET,LENGTH,LIST, splice ARRAY,OFFSET,LENGTH, -splice ARRAY,OFFSET, splice ARRAY, split /PATTERN/,EXPR,LIMIT, split -/PATTERN/,EXPR, split /PATTERN/, split, sprintf FORMAT, LIST, sqrt EXPR, -sqrt, srand EXPR, srand, stat FILEHANDLE, stat EXPR, stat, study SCALAR, -study, sub BLOCK, sub NAME, sub NAME BLOCK, substr -EXPR,OFFSET,LENGTH,REPLACEMENT, substr EXPR,OFFSET,LENGTH, substr -EXPR,OFFSET, symlink OLDFILE,NEWFILE, syscall LIST, sysopen -FILEHANDLE,FILENAME,MODE, sysopen FILEHANDLE,FILENAME,MODE,PERMS, sysread -FILEHANDLE,SCALAR,LENGTH,OFFSET, sysread FILEHANDLE,SCALAR,LENGTH, sysseek -FILEHANDLE,POSITION,WHENCE, system LIST, system PROGRAM LIST, syswrite -FILEHANDLE,SCALAR,LENGTH,OFFSET, syswrite FILEHANDLE,SCALAR,LENGTH, -syswrite FILEHANDLE,SCALAR, tell FILEHANDLE, tell, telldir DIRHANDLE, tie -VARIABLE,CLASSNAME,LIST, tied VARIABLE, time, times, tr///, truncate -FILEHANDLE,LENGTH, truncate EXPR,LENGTH, uc EXPR, uc, ucfirst EXPR, -ucfirst, umask EXPR, umask, undef EXPR, undef, unlink LIST, unlink, unpack -TEMPLATE,EXPR, untie VARIABLE, unshift ARRAY,LIST, use Module VERSION LIST, -use Module VERSION, use Module LIST, use Module, use VERSION, utime LIST, -values HASH, vec EXPR,OFFSET,BITS, wait, waitpid PID,FLAGS, wantarray, warn -LIST, write FILEHANDLE, write EXPR, write, y/// +=item SEE ALSO =back =back -=head2 perlvar - Perl predefined variables +=head2 perlfilter - Source Filters =over =item DESCRIPTION -=over +=item CONCEPTS -=item Predefined Names +=item USING FILTERS -$ARG, $_, $>, $MATCH, $&, $PREMATCH, $`, $POSTMATCH, $', -$LAST_PAREN_MATCH, $+, @LAST_MATCH_END, @+, $MULTILINE_MATCHING, $*, -input_line_number HANDLE EXPR, $INPUT_LINE_NUMBER, $NR, $, -input_record_separator HANDLE EXPR, $INPUT_RECORD_SEPARATOR, $RS, $/, -autoflush HANDLE EXPR, $OUTPUT_AUTOFLUSH, $|, output_field_separator HANDLE -EXPR, $OUTPUT_FIELD_SEPARATOR, $OFS, $,, output_record_separator HANDLE -EXPR, $OUTPUT_RECORD_SEPARATOR, $ORS, $\, $LIST_SEPARATOR, $", -$SUBSCRIPT_SEPARATOR, $SUBSEP, $;, $OFMT, $#, format_page_number HANDLE -EXPR, $FORMAT_PAGE_NUMBER, $%, format_lines_per_page HANDLE EXPR, -$FORMAT_LINES_PER_PAGE, $=, format_lines_left HANDLE EXPR, -$FORMAT_LINES_LEFT, $-, @LAST_MATCH_START, @-, C<$`> is the same as -C, C<$&> is the same as C, C<$'> is the same as C, C<$1> is the same -as C, C<$2> is the same as -C, C<$3> is the same as C, format_name HANDLE EXPR, $FORMAT_NAME, $~, -format_top_name HANDLE EXPR, $FORMAT_TOP_NAME, $^, -format_line_break_characters HANDLE EXPR, $FORMAT_LINE_BREAK_CHARACTERS, -$:, format_formfeed HANDLE EXPR, $FORMAT_FORMFEED, $^L, $ACCUMULATOR, $^A, -$CHILD_ERROR, $?, $OS_ERROR, $ERRNO, $!, $EXTENDED_OS_ERROR, $^E, -$EVAL_ERROR, $@, $PROCESS_ID, $PID, $$, $REAL_USER_ID, $UID, $<, -$EFFECTIVE_USER_ID, $EUID, $>, $REAL_GROUP_ID, $GID, $(, -$EFFECTIVE_GROUP_ID, $EGID, $), $PROGRAM_NAME, $0, $[, $], $COMPILING, $^C, -$DEBUGGING, $^D, $SYSTEM_FD_MAX, $^F, $^H, %^H, $INPLACE_EDIT, $^I, $^M, -$OSNAME, $^O, $PERLDB, $^P, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, -0x100, 0x200, $LAST_REGEXP_CODE_RESULT, $^R, $EXCEPTIONS_BEING_CAUGHT, $^S, -$BASETIME, $^T, $PERL_VERSION, $^V, $WARNING, $^W, ${^WARNING_BITS}, -${^WIDE_SYSTEM_CALLS}, $EXECUTABLE_NAME, $^X, $ARGV, @ARGV, @INC, @_, %INC, -%ENV, $ENV{expr}, %SIG, $SIG{expr} +=item WRITING A SOURCE FILTER -=item Error Indicators +=item WRITING A SOURCE FILTER IN C -=item Technical Note on the Syntax of Variable Names +B -=back +=item CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE -=item BUGS +=item WRITING A SOURCE FILTER IN PERL + +=item USING CONTEXT: THE DEBUG FILTER + +=item CONCLUSION + +=item REQUIREMENTS + +=item AUTHOR + +=item Copyrights =back -=head2 perlsub - Perl subroutines +=head2 perldbmfilter - Perl DBM Filters =over @@ -1917,1993 +3925,2267 @@ ${^WIDE_SYSTEM_CALLS}, $EXECUTABLE_NAME, $^X, $ARGV, @ARGV, @INC, @_, %INC, =item DESCRIPTION -=over - -=item Private Variables via my() +B, B, B, +B -=item Persistent Private Variables +=over -=item Temporary Values via local() +=item The Filter -=item Lvalue subroutines +=item An Example -- the NULL termination problem. -=item Passing Symbol Table Entries (typeglobs) +=item Another Example -- Key is a C int. -=item When to Still Use local() +=back -1. You need to give a global variable a temporary value, especially $_, 2. -You need to create a local file or directory handle or a local function, 3. -You want to temporarily change just one element of an array or hash +=item SEE ALSO -=item Pass by Reference +=item AUTHOR -=item Prototypes +=back -=item Constant Functions +=head2 perlapi - autogenerated documentation for the perl public API -=item Overriding Built-in Functions +=over -=item Autoloading +=item DESCRIPTION -=item Subroutine Attributes +AvFILL, av_clear, av_extend, av_fetch, av_len, av_make, av_pop, av_push, +av_shift, av_store, av_undef, av_unshift, bytes_to_utf8, call_argv, +call_method, call_pv, call_sv, CLASS, Copy, croak, CvSTASH, dMARK, +dORIGMARK, dSP, dXSARGS, dXSI32, ENTER, eval_pv, eval_sv, EXTEND, +fbm_compile, fbm_instr, FREETMPS, get_av, get_cv, get_hv, get_sv, GIMME, +GIMME_V, GvSV, gv_fetchmeth, gv_fetchmethod, gv_fetchmethod_autoload, +gv_stashpv, gv_stashsv, G_ARRAY, G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR, +G_VOID, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY, HeSVKEY_force, +HeSVKEY_set, HeVAL, HvNAME, hv_clear, hv_delete, hv_delete_ent, hv_exists, +hv_exists_ent, hv_fetch, hv_fetch_ent, hv_iterinit, hv_iterkey, +hv_iterkeysv, hv_iternext, hv_iternextsv, hv_iterval, hv_magic, hv_store, +hv_store_ent, hv_undef, isALNUM, isALPHA, isDIGIT, isLOWER, isSPACE, +isUPPER, items, ix, LEAVE, looks_like_number, MARK, mg_clear, mg_copy, +mg_find, mg_free, mg_get, mg_length, mg_magical, mg_set, Move, New, newAV, +Newc, newCONSTSUB, newHV, newRV_inc, newRV_noinc, NEWSV, newSViv, newSVnv, +newSVpv, newSVpvf, newSVpvn, newSVrv, newSVsv, newSVuv, newXS, newXSproto, +Newz, Nullav, Nullch, Nullcv, Nullhv, Nullsv, ORIGMARK, perl_alloc, +perl_construct, perl_destruct, perl_free, perl_parse, perl_run, +PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn, PL_modglobal, PL_na, +PL_sv_no, PL_sv_undef, PL_sv_yes, POPi, POPl, POPn, POPp, POPs, PUSHi, +PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, Renew, Renewc, require_pv, +RETVAL, Safefree, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE, +strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy, SvCUR, SvCUR_set, +SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_off, SvIOK_on, SvIOK_only, +SvIV, SvIVX, SvLEN, SvLOCK, SvNIOK, SvNIOKp, SvNIOK_off, SvNOK, SvNOKp, +SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, SvOK, SvOOK, SvPOK, SvPOKp, +SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX, SvPV_force, SvPV_nolen, +SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV, +SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH, SvTAINT, SvTAINTED, +SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype, SVt_IV, SVt_NV, +SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUNLOCK, SvUPGRADE, SvUV, +SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn, +sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg, sv_chop, sv_cmp, sv_dec, +sv_derived_from, sv_eq, sv_grow, sv_inc, sv_insert, sv_isa, sv_isobject, +sv_len, sv_magic, sv_mortalcopy, sv_newmortal, sv_setiv, sv_setiv_mg, +sv_setnv, sv_setnv_mg, sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setpviv, +sv_setpviv_mg, sv_setpvn, sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, +sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, +sv_setuv_mg, sv_unref, sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, +sv_vsetpvfn, THIS, toLOWER, toUPPER, U8 *s, utf8_to_bytes, warn, XPUSHi, +XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, +XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, +XST_mIV, XST_mNO, XST_mNV, XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, +XS_VERSION_BOOTCHECK, Zero -=back +=item AUTHORS =item SEE ALSO =back -=head2 perlmod - Perl modules (packages and symbol tables) +=head2 perlintern - autogenerated documentation of purely B + Perl functions =over =item DESCRIPTION +is_gv_magical + +=item AUTHORS + +=item SEE ALSO + +=back + +=head2 perlapio - perl's IO abstraction interface. + =over -=item Packages +=item SYNOPSIS -=item Symbol Tables +=item DESCRIPTION -=item Package Constructors and Destructors +B, B, B, B, +B, B, +B, B, +B, B, +B, B, B, +B, B, B, +B, B, B, +B, B, B, +B, B, B, +B, B -=item Perl Classes +=over -=item Perl Modules +=item Co-existence with stdio -=back +B, B, +B, B, B, +B, B, B, +B, B, +B, B, B, +B, B -=item SEE ALSO +=back =back -=head2 perlmodlib - constructing new Perl modules and finding existing ones +=head2 perltodo - Perl TO-DO List =over =item DESCRIPTION -=item THE PERL MODULE LIBRARY +=item Infrastructure =over -=item Pragmatic Modules +=item Mailing list archives -attributes, attrs, autouse, base, blib, bytes, charnames, constant, -diagnostics, fields, filetest, integer, less, lib, locale, open, ops, -overload, re, sigtrap, strict, subs, utf8, vars, warnings +=item Bug tracking system -=item Standard Modules +=item Regression Tests -AnyDBM_File, AutoLoader, AutoSplit, B, B::Asmdata, B::Assembler, B::Bblock, -B::Bytecode, B::C, B::CC, B::Debug, B::Deparse, B::Disassembler, B::Lint, -B::Showlex, B::Stackobj, B::Terse, B::Xref, Benchmark, ByteLoader, CGI, -CGI::Apache, CGI::Carp, CGI::Cookie, CGI::Fast, CGI::Pretty, CGI::Push, -CGI::Switch, CPAN, CPAN::FirstTime, CPAN::Nox, Carp, Carp::Heavy, -Class::Struct, Cwd, DB, DB_File, Devel::SelfStubber, DirHandle, Dumpvalue, -English, Env, Exporter, Exporter::Heavy, ExtUtils::Command, -ExtUtils::Embed, ExtUtils::Install, ExtUtils::Installed, ExtUtils::Liblist, -ExtUtils::MM_Cygwin, ExtUtils::MM_OS2, ExtUtils::MM_Unix, ExtUtils::MM_VMS, -ExtUtils::MM_Win32, ExtUtils::MakeMaker, ExtUtils::Manifest, -ExtUtils::Mkbootstrap, ExtUtils::Mksymlists, ExtUtils::Packlist, -ExtUtils::testlib, Fatal, Fcntl, File::Basename, File::CheckTree, -File::Compare, File::Copy, File::DosGlob, File::Find, File::Path, -File::Spec, File::Spec::Functions, File::Spec::Mac, File::Spec::OS2, -File::Spec::Unix, File::Spec::VMS, File::Spec::Win32, File::Temp, -File::stat, FileCache, FileHandle, FindBin, Getopt::Long, Getopt::Std, -I18N::Collate, IO, IPC::Open2, IPC::Open3, Math::BigFloat, Math::BigInt, -Math::Complex, Math::Trig, NDBM_File, Net::Ping, Net::hostent, Net::netent, -Net::protoent, Net::servent, O, ODBM_File, Opcode, Pod::Checker, Pod::Find, -Pod::Html, Pod::InputObjects, Pod::Man, Pod::ParseUtils, Pod::Parser, -Pod::Plainer, Pod::Select, Pod::Text, Pod::Text::Color, Pod::Text::Termcap, -Pod::Usage, SDBM_File, Safe, Search::Dict, SelectSaver, SelfLoader, Shell, -Socket, Symbol, Term::ANSIColor, Term::Cap, Term::Complete, Term::ReadLine, -Test, Test::Harness, Text::Abbrev, Text::ParseWords, Text::Soundex, -Text::Wrap, Tie::Array, Tie::Handle, Tie::Hash, Tie::RefHash, Tie::Scalar, -Tie::SubstrHash, Time::Local, Time::gmtime, Time::localtime, Time::tm, -UNIVERSAL, User::grent, User::pwent +Coverage, Regression, __DIE__, suidperl, The 25% slowdown from perl4 to +perl5 -=item Extension Modules +=back + +=item Configure + +=over + +=item Install HTML =back -=item CPAN +=item Perl Language -Language Extensions and Documentation Tools, Development Support, Operating -System Interfaces, Networking, Device Control (modems) and InterProcess -Communication, Data Types and Data Type Utilities, Database Interfaces, -User Interfaces, Interfaces to / Emulations of Other Programming Languages, -File Names, File Systems and File Locking (see also File Handles), String -Processing, Language Text Processing, Parsing, and Searching, Option, -Argument, Parameter, and Configuration File Processing, -Internationalization and Locale, Authentication, Security, and Encryption, -World Wide Web, HTML, HTTP, CGI, MIME, Server and Daemon Utilities, -Archiving and Compression, Images, Pixmap and Bitmap Manipulation, Drawing, -and Graphing, Mail and Usenet News, Control Flow Utilities (callbacks and -exceptions etc), File Handle and Input/Output Stream Utilities, -Miscellaneous Modules, Africa, Asia, Australasia, Central America, Europe, -North America, South America +=over + +=item our ($var) + +=item 64-bit Perl + +=item Prototypes + +Named prototypes, Indirect objects, Method calls, Context, Scoped subs -=item Modules: Creation, Use, and Abuse +=back + +=item Perl Internals =over -=item Guidelines for Module Creation +=item magic_setisa -Do similar modules already exist in some form?, Try to design the new -module to be easy to extend and reuse, Some simple style guidelines, Select -what to export, Select a name for the module, Have you got it right?, -README and other Additional Files, A description of the -module/package/extension etc, A copyright notice - see below, Prerequisites -- what else you may need to have, How to build it - possible changes to -Makefile.PL etc, How to install it, Recent changes in this release, -especially incompatibilities, Changes / enhancements you plan to make in -the future, Adding a Copyright Notice, Give the module a -version/issue/release number, How to release and distribute a module, Take -care when changing a released module +=item Garbage Collection -=item Guidelines for Converting Perl 4 Library Scripts into Modules +=item Reliable signals -There is no requirement to convert anything, Consider the implications, -Make the most of the opportunity, The pl2pm utility will get you started, -Adds the standard Module prologue lines, Converts package specifiers from ' -to ::, Converts die(...) to croak(...), Several other minor changes +Alternate runops() for signal despatch, Figure out how to die() in delayed +sighandler, Add tests for Thread::Signal, Automatic tests against CPAN -=item Guidelines for Reusing Application Code +=item Interpolated regex performance bugs -Complete applications rarely belong in the Perl Module Library, Many -applications contain some Perl code that could be reused, Break-out the -reusable code into one or more separate module files, Take the opportunity -to reconsider and redesign the interfaces, In some cases the 'application' -can then be reduced to a small +=item Memory leaks from failed eval/regcomp -=back +=item Make XS easier to use -=item NOTE +=item Make embedded Perl easier to use + +=item Namespace cleanup + +=item MULTIPLICITY + +=item MacPerl =back -=head2 perlmodinstall - Installing CPAN Modules +=item Documentation =over -=item DESCRIPTION +=item A clear division into tutorial and reference -=over +=item Remove the artificial distinction between operators and functions -=item PREAMBLE +=item More tutorials -B the file, B the file into a directory, B the -module (sometimes unnecessary), B the module +Regular expressions, I/O, pack/unpack, Debugging -=back +=item Include a search tool -=item HEY +=item Include a locate tool -=item AUTHOR +=item Separate function manpages by default -=item COPYRIGHT +=item Users can't find the manpages + +=item Install ALL Documentation + +=item Outstanding issues to be documented + +=item Adapt www.linuxhq.com for Perl + +=item Replace man with a perl program + +=item Unicode tutorial =back -=head2 perlfork - Perl's fork() emulation +=item Modules =over -=item SYNOPSIS +=item Update the POSIX extension to conform with the POSIX 1003.1 Edition 2 -=item DESCRIPTION +=item Module versions -=over +=item New modules -=item Behavior of other Perl features in forked pseudo-processes +=item Profiler -$$ or $PROCESS_ID, %ENV, chdir() and all other builtins that accept -filenames, wait() and waitpid(), kill(), exec(), exit(), Open handles to -files, directories and network sockets +=item Tie Modules -=item Resource limits +VecArray, SubstrArray, VirtualArray, ShiftSplice -=item Killing the parent process +=item Procedural options -=item Lifetime of the parent process and pseudo-processes +=item RPC -=item CAVEATS AND LIMITATIONS +=item y2k localtime/gmtime -BEGIN blocks, Open filehandles, Forking pipe open() not yet implemented, -Global state maintained by XSUBs, Interpreter embedded in larger -application, Thread-safety of extensions +=item Export File::Find variables -=back +=item Ioctl -=item BUGS +=item Debugger attach/detach -=item AUTHOR +=item Regular Expression debugger -=item SEE ALSO +=item Alternative RE Syntax + +=item Bundled modules + +=item Expect + +=item GUI::Native + +=item Update semibroken auxiliary tools; h2ph, a2p, etc. + +=item POD Converters + +=item pod2html + +=item Podchecker =back -=head2 perlform - Perl formats +=item Tom's Wishes =over -=item DESCRIPTION +=item Webperl -=over +=item Mobile agents -=item Format Variables +=item POSIX on non-POSIX + +=item Portable installations =back -=item NOTES +=item Win32 Stuff =over -=item Footers +=item Rename new headers to be consistent with the rest -=item Accessing Formatting Internals +=item Sort out the spawnvp() mess -=back +=item Work out DLL versioning -=item WARNINGS +=item Style-check =back -=head2 perllocale - Perl locale handling (internationalization and -localization) +=item Would be nice to have + +C, Contiguous bitfields in pack/unpack, lexperl, Bundled +perl preprocessor, Use posix calls internally where possible, format +BOTTOM, -i rename file only when successfully changed, All ARGV input +should act like <>, report HANDLE [formats], support in perlmain to rerun +debugger, lvalue functions + +=item Possible pragmas =over -=item DESCRIPTION +=item 'less' -=item PREPARING TO USE LOCALES +=back -=item USING LOCALES +=item Optimizations =over -=item The use locale pragma +=item constant function cache -=item The setlocale function +=item foreach(reverse...) -=item Finding locales +=item Cache eval tree -=item LOCALE PROBLEMS +=item rcatmaybe -=item Temporarily fixing locale problems +=item Shrink opcode tables -=item Permanently fixing locale problems +=item Cache hash value -=item Permanently fixing your system's locale configuration +=item Optimize away @_ where possible -=item Fixing system locale configuration +=item Optimize sort by { $a <=> $b } -=item The localeconv function +=item Rewrite regexp parser for better integrated optimization =back -=item LOCALE CATEGORIES +=item Vague possibilities -=over +ref function in list context, make tr/// return histogram in list context?, +Loop control on do{} et al, Explicit switch statements, compile to real +threaded code, structured types, Modifiable $1 et al -=item Category LC_COLLATE: Collation +=item To Do Or Not To Do -=item Category LC_CTYPE: Character Types +=over -=item Category LC_NUMERIC: Numeric Formatting +=item Making my() work on "package" variables -=item Category LC_MONETARY: Formatting of monetary amounts +=item "or" testing defined not truth -=item LC_TIME +=item "dynamic" lexicals -=item Other categories +=item "class"-based, rather than package-based "lexicals" =back -=item SECURITY +=item Threading -B (C, C, C, C and C):, -B (with C<\l>, C<\L>, C<\u> or C<\U>), -B (C):, B (C):, -B (printf() and write()):, B (lc(), lcfirst(), uc(), ucfirst()):, B (localeconv(), strcoll(), strftime(), strxfrm()):, B (isalnum(), isalpha(), isdigit(), isgraph(), -islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit()): +=over -=item ENVIRONMENT +=item Modules -PERL_BADLANG, LC_ALL, LANGUAGE, LC_CTYPE, LC_COLLATE, LC_MONETARY, -LC_NUMERIC, LC_TIME, LANG +=item Testing -=item NOTES +=item $AUTOLOAD + +=item exit/die + +=item External threads + +=item Thread::Pool + +=item thread-safety + +=item Per-thread GVs + +=back + +=item Compiler =over -=item Backward compatibility +=item Optimization -=item I18N:Collate obsolete +=item Byteperl -=item Sort speed and memory use impacts +=item Precompiled modules -=item write() and LC_NUMERIC +=item Executables -=item Freely available locale definitions +=item Typed lexicals -=item I18n and l10n +=item Win32 -=item An imperfect standard +=item END blocks + +=item _AUTOLOAD + +=item comppadlist + +=item Cached compilation =back -=item BUGS +=item Recently Finished Tasks =over -=item Broken systems +=item Figure a way out of $^(capital letter) -=back +=item Filenames -=item SEE ALSO +=item Foreign lines -=item HISTORY +=item Namespace cleanup + +=item ISA.pm + +=item gettimeofday + +=item autocroak? =back -=head2 perlref - Perl references and nested data structures +=back + +=head2 perlhack - How to hack at the Perl internals =over -=item NOTE +=item DESCRIPTION + +Does concept match the general goals of Perl?, Where is the +implementation?, Backwards compatibility, Could it be a module instead?, Is +the feature generic enough?, Does it potentially introduce new bugs?, Does +it preclude other desirable features?, Is the implementation robust?, Is +the implementation generic enough to be portable?, Is there enough +documentation?, Is there another way to do it?, Does it create too much +work?, Patches speak louder than words + +=item AUTHOR + +=back + +=head2 perlhist - the Perl history records + +=over =item DESCRIPTION +=item INTRODUCTION + +=item THE KEEPERS OF THE PUMPKIN + =over -=item Making References +=item PUMPKIN? -=item Using References +=back -=item Symbolic references +=item THE RECORDS -=item Not-so-symbolic references +=over -=item Pseudo-hashes: Using an array as a hash +=item SELECTED RELEASE SIZES -=item Function Templates +=item SELECTED PATCH SIZES =back -=item WARNING - -=item SEE ALSO +=item THE KEEPERS OF THE RECORDS =back -=head2 perlreftut - Mark's very short tutorial about references +=head2 perldelta - what's new for perl v5.6.0 =over =item DESCRIPTION -=item Who Needs Complicated Data Structures? +=item Core Enhancements -=item The Solution +=over -=item Syntax +=item Interpreter cloning, threads, and concurrency -=over +=item Lexically scoped warning categories -=item Making References +=item Unicode and UTF-8 support -=item Using References +=item Support for interpolating named characters -=back +=item "our" declarations -=item An Example +=item Support for strings represented as a vector of ordinals -=item Arrow Rule +=item Improved Perl version numbering system -=item Solution +=item New syntax for declaring subroutine attributes -=item The Rest +=item File and directory handles can be autovivified -=item Summary +=item open() with more than two arguments -=item Credits +=item 64-bit support -=over +=item Large file support -=item Distribution Conditions +=item Long doubles -=back +=item "more bits" -=back +=item Enhanced support for sort() subroutines -=head2 perldsc - Perl Data Structures Cookbook +=item C allowed -=over +=item File globbing implemented internally -=item DESCRIPTION +Support for CHECK blocks -arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, -more elaborate constructs +=item POSIX character class syntax [: :] supported -=item REFERENCES +Better pseudo-random number generator + +=item Improved C operator + +Better worst-case behavior of hashes + +=item pack() format 'Z' supported + +=item pack() format modifier '!' supported + +=item pack() and unpack() support counted strings + +=item Comments in pack() templates + +=item Weak references + +=item Binary numbers supported + +=item Lvalue subroutines + +=item Some arrows may be omitted in calls through references + +=item Boolean assignment operators are legal lvalues + +=item exists() is supported on subroutine names -=item COMMON MISTAKES +=item exists() and delete() are supported on array elements -=item CAVEAT ON PRECEDENCE +=item Pseudo-hashes work better -=item WHY YOU SHOULD ALWAYS C +=item Automatic flushing of output buffers -=item DEBUGGING +=item Better diagnostics on meaningless filehandle operations -=item CODE EXAMPLES +=item Where possible, buffered data discarded from duped input filehandle -=item ARRAYS OF ARRAYS +=item eof() has the same old magic as <> -=over +=item binmode() can be used to set :crlf and :raw modes -=item Declaration of a ARRAY OF ARRAYS +=item C<-T> filetest recognizes UTF-8 encoded files as "text" -=item Generation of a ARRAY OF ARRAYS +=item system(), backticks and pipe open now reflect exec() failure -=item Access and Printing of a ARRAY OF ARRAYS +=item Improved diagnostics -=back +=item Diagnostics follow STDERR -=item HASHES OF ARRAYS +More consistent close-on-exec behavior -=over +=item syswrite() ease-of-use -=item Declaration of a HASH OF ARRAYS +=item Better syntax checks on parenthesized unary operators -=item Generation of a HASH OF ARRAYS +=item Bit operators support full native integer width -=item Access and Printing of a HASH OF ARRAYS +=item Improved security features -=back +More functional bareword prototype (*) -=item ARRAYS OF HASHES +=item C and C may be overridden -=over +=item $^X variables may now have names longer than one character -=item Declaration of a ARRAY OF HASHES +=item New variable $^C reflects C<-c> switch -=item Generation of a ARRAY OF HASHES +=item New variable $^V contains Perl version as a string -=item Access and Printing of a ARRAY OF HASHES +=item Optional Y2K warnings =back -=item HASHES OF HASHES +=item Modules and Pragmata =over -=item Declaration of a HASH OF HASHES +=item Modules -=item Generation of a HASH OF HASHES +attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, +DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, +Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, +File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, +Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, +podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, +pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, +Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters -=item Access and Printing of a HASH OF HASHES +=item Pragmata =back -=item MORE ELABORATE RECORDS +=item Utility Changes =over -=item Declaration of MORE ELABORATE RECORDS - -=item Declaration of a HASH OF COMPLEX RECORDS +=item dprofpp -=item Generation of a HASH OF COMPLEX RECORDS +=item find2perl -=back +=item h2xs -=item Database Ties +=item perlcc -=item SEE ALSO +=item perldoc -=item AUTHOR +=item The Perl Debugger =back -=head2 perllol - Manipulating Arrays of Arrays in Perl - -=over +=item Improved Documentation -=item DESCRIPTION +perlapi.pod, perlboot.pod, perlcompile.pod, perldbmfilter.pod, +perldebug.pod, perldebguts.pod, perlfork.pod, perlfilter.pod, perlhack.pod, +perlintern.pod, perllexwarn.pod, perlnumber.pod, perlopentut.pod, +perlreftut.pod, perltootc.pod, perltodo.pod, perlunicode.pod -=item Declaration and Access of Arrays of Arrays +=item Performance enhancements -=item Growing Your Own +=over -=item Access and Printing +=item Simple sort() using { $a <=> $b } and the like are optimized -=item Slices +=item Optimized assignments to lexical variables -=item SEE ALSO +=item Faster subroutine calls -=item AUTHOR +delete(), each(), values() and hash iteration are faster =back -=head2 perlboot - Beginner's Object-Oriented Tutorial - -=over - -=item DESCRIPTION +=item Installation and Configuration Improvements =over -=item If we could talk to the animals... +=item -Dusethreads means something different -=item Introducing the method invocation arrow +=item New Configure flags -=item Invoking a barnyard +=item Threadedness and 64-bitness now more daring -=item The extra parameter of method invocation +=item Long Doubles -=item Calling a second method to simplify things +=item -Dusemorebits -=item Inheriting the windpipes +=item -Duselargefiles -=item A few notes about @ISA +=item installusrbinperl -=item Overriding the methods +=item SOCKS support -=item Starting the search from a different place +=item C<-A> flag -=item The SUPER way of doing things +=item Enhanced Installation Directories -=item Where we're at so far... +=back -=item A horse is a horse, of course of course -- or is it? +=item Platform specific changes -=item Invoking an instance method +=over -=item Accessing the instance data +=item Supported platforms -=item How to build a horse +=item DOS -=item Inheriting the constructor +=item OS390 (OpenEdition MVS) -=item Making a method work with either classes or instances +=item VMS -=item Adding parameters to a method +=item Win32 -=item More interesting instances +=back -=item A horse of a different color +=item Significant bug fixes -=item Summary +=over -=back +=item on empty files -=item SEE ALSO +=item C improvements -=item COPYRIGHT +=item All compilation errors are true errors -=back +=item Implicitly closed filehandles are safer -=head2 perltoot - Tom's object-oriented tutorial for perl +=item Behavior of list slices is more consistent -=over +=item C<(\$)> prototype and C<$foo{a}> -=item DESCRIPTION +=item C and AUTOLOAD -=item Creating a Class +=item C<-bareword> allowed under C -=over +=item Failures in DESTROY() -=item Object Representation +=item Locale bugs fixed -=item Class Interface +=item Memory leaks -=item Constructors and Instance Methods +=item Spurious subroutine stubs after failed subroutine calls -=item Planning for the Future: Better Constructors +=item Taint failures under C<-U> -=item Destructors +=item END blocks and the C<-c> switch -=item Other Object Methods +=item Potential to leak DATA filehandles =back -=item Class Data - -=over - -=item Accessing Class Data +=item New or Changed Diagnostics -=item Debugging Methods +(perhaps you forgot to load "%s"?), "%s" variable %s masks earlier +declaration in same %s, "my sub" not yet implemented, "our" variable %s +redeclared, '!' allowed only after types %s, / cannot take a count, / must +be followed by a, A or Z, / must be followed by a*, A* or Z*, / must follow +a numeric type, /%s/: Unrecognized escape \\%c passed through, /%s/: +Unrecognized escape \\%c in character class passed through, /%s/ should +probably be written as "%s", %s() called too early to check prototype, %s +argument is not a HASH or ARRAY element, %s argument is not a HASH or ARRAY +element or slice, %s argument is not a subroutine name, %s package +attribute may clash with future reserved word: %s, (in cleanup) %s, <> +should be quotes, Attempt to join self, Bad evalled substitution pattern, +Bad realloc() ignored, Bareword found in conditional, Binary number > +0b11111111111111111111111111111111 non-portable, Bit vector size > 32 +non-portable, Buffer overflow in prime_env_iter: %s, Can't check filesystem +of script "%s", Can't declare class for non-scalar %s in "%s", Can't +declare %s in "%s", Can't ignore signal CHLD, forcing to default, Can't +modify non-lvalue subroutine call, Can't read CRTL environ, Can't remove +%s: %s, skipping file, Can't return %s from lvalue subroutine, Can't weaken +a nonreference, Character class [:%s:] unknown, Character class syntax [%s] +belongs inside character classes, Constant is not %s reference, +constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, +defined(%hash) is deprecated, Did not produce a valid header, (Did you mean +"local" instead of "our"?), Document contains no data, entering effective +%s failed, false [] range "%s" in regexp, Filehandle %s opened only for +output, flock() on closed filehandle %s, Global symbol "%s" requires +explicit package name, Hexadecimal number > 0xffffffff non-portable, +Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: +|%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal +number of bits in vec, Integer overflow in %s number, Invalid %s attribute: +%s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid +separator character %s in attribute list, Invalid separator character %s in +subroutine attribute list, leaving effective %s failed, Lvalue subs +returning %s not implemented yet, Method %s not permitted, Missing +%sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", +No %s specified for -%c, No package name allowed for variable %s in "our", +No space allowed after -%c, no UTC offset information; assuming local time +is UTC, Octal number > 037777777777 non-portable, panic: del_backref, +panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing +around "%s" list, Possible Y2K bug: %s, pragma "attrs" is deprecated, use +"sub NAME : ATTRS" instead, Premature end of script headers, Repeat count +in pack overflows, Repeat count in unpack overflows, realloc() of freed +memory ignored, Reference is already weak, setpgrp can't take arguments, +Strange *+?{} on zero-length expression, switching effective %s is not +implemented, This Perl can't reset CRTL environ elements (%s), This Perl +can't set CRTL environ elements (%s=%s), Too late to run %s block, Unknown +open() mode '%s', Unknown process %x sent message to prime_env_iter: %s, +Unrecognized escape \\%c passed through, Unterminated attribute parameter +in attribute list, Unterminated attribute list, Unterminated attribute +parameter in subroutine attribute list, Unterminated subroutine attribute +list, Value of CLI symbol "%s" too long, Version number must be a constant +number -=item Class Destructors +=item New tests -=item Documenting the Interface +=item Incompatible Changes -=back +=over -=item Aggregation +=item Perl Source Incompatibilities -=item Inheritance +CHECK is a new keyword, Treatment of list slices of undef has changed -=over +=item Format of $English::PERL_VERSION is different -=item Overridden Methods +Literals of the form C<1.2.3> parse differently, Possibly changed +pseudo-random number generator, Hashing function for hash keys has changed, +C fails on read only values, Close-on-exec bit may be set on pipe +and socket handles, Writing C<"$$1"> to mean C<"${$}1"> is unsupported, +delete(), values() and C<\(%h)> operate on aliases to values, not copies, +vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS, Text of some diagnostic +output has changed, C<%@> has been removed, Parenthesized not() behaves +like a list operator, Semantics of bareword prototype C<(*)> have changed -=item Multiple Inheritance +=item Semantics of bit operators may have changed on 64-bit platforms -=item UNIVERSAL: The Root of All Objects +=item More builtins taint their results -=back +=item C Source Incompatibilities -=item Alternate Object Representations +C, C, C -=over +=item Compatible C Source API Changes -=item Arrays as Objects +C is now C -=item Closures as Objects +=item Binary Incompatibilities =back -=item AUTOLOAD: Proxy Methods +=item Known Problems =over -=item Autoloaded Data Methods +=item Thread test failures -=item Inherited Autoloaded Data Methods +=item EBCDIC platforms not supported -=back +=item In 64-bit HP-UX the lib/io_multihomed test may hang + +=item NEXTSTEP 3.3 POSIX test failure -=item Metaclassical Tools +=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with +gcc -=over +=item UNICOS/mk CC failures during Configure run -=item Class::Struct +=item Arrow operator and arrays -=item Data Members as Variables +=item Windows 2000 -=item NOTES +=item Experimental features -=item Object Terminology +Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The +pseudo-hash data type, The Compiler suite, Internal implementation of file +globbing, The DB module, The regular expression constructs C<(?{ code })> +and C<(??{ code })> =back -=item SEE ALSO - -=item AUTHOR AND COPYRIGHT +=item Obsolete Diagnostics -=item COPYRIGHT +Character class syntax [: :] is reserved for future extensions, Ill-formed +logical name |%s| in prime_env_iter, Probable precedence problem on %s, +regexp too big, Use of "$$" to mean "${$}" is deprecated -=over +=item Reporting Bugs -=item Acknowledgments +=item SEE ALSO -=back +=item HISTORY =back -=head2 perltootc - Tom's OO Tutorial for Class Data in Perl +=head2 perl56delta, perldelta - what's new for perl v5.6.0 =over =item DESCRIPTION -=item Class Data as Package Variables +=item Core Enhancements =over -=item Putting All Your Eggs in One Basket - -=item Inheritance Concerns +=item Interpreter cloning, threads, and concurrency -=item The Eponymous Meta-Object +=item Lexically scoped warning categories -=item Indirect References to Class Data +=item Unicode and UTF-8 support -=item Monadic Classes +=item Support for interpolating named characters -=item Translucent Attributes +=item "our" declarations -=back +=item Support for strings represented as a vector of ordinals -=item Class Data as Lexical Variables +=item Improved Perl version numbering system -=over +=item New syntax for declaring subroutine attributes -=item Privacy and Responsibility +=item File and directory handles can be autovivified -=item File-Scoped Lexicals +=item open() with more than two arguments -=item More Inheritance Concerns +=item 64-bit support -=item Locking the Door and Throwing Away the Key +=item Large file support -=item Translucency Revisited +=item Long doubles -=back +=item "more bits" -=item NOTES +=item Enhanced support for sort() subroutines -=item SEE ALSO +=item C allowed -=item AUTHOR AND COPYRIGHT +=item File globbing implemented internally -=item ACKNOWLEDGEMENTS +=item Support for CHECK blocks -=item HISTORY +=item POSIX character class syntax [: :] supported -=back +=item Better pseudo-random number generator -=head2 perlobj - Perl objects +=item Improved C operator -=over +=item Better worst-case behavior of hashes -=item DESCRIPTION +=item pack() format 'Z' supported -=over +=item pack() format modifier '!' supported -=item An Object is Simply a Reference +=item pack() and unpack() support counted strings -=item A Class is Simply a Package +=item Comments in pack() templates -=item A Method is Simply a Subroutine +=item Weak references -=item Method Invocation +=item Binary numbers supported -=item WARNING +=item Lvalue subroutines -=item Default UNIVERSAL methods +=item Some arrows may be omitted in calls through references -isa(CLASS), can(METHOD), VERSION( [NEED] ) +=item Boolean assignment operators are legal lvalues -=item Destructors +=item exists() is supported on subroutine names -=item Summary +=item exists() and delete() are supported on array elements -=item Two-Phased Garbage Collection +=item Pseudo-hashes work better -=back +=item Automatic flushing of output buffers -=item SEE ALSO +=item Better diagnostics on meaningless filehandle operations -=back +=item Where possible, buffered data discarded from duped input filehandle -=head2 perltie - how to hide an object class in a simple variable +=item eof() has the same old magic as <> -=over +=item binmode() can be used to set :crlf and :raw modes -=item SYNOPSIS +=item C<-T> filetest recognizes UTF-8 encoded files as "text" -=item DESCRIPTION +=item system(), backticks and pipe open now reflect exec() failure -=over +=item Improved diagnostics -=item Tying Scalars +=item Diagnostics follow STDERR -TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this +=item More consistent close-on-exec behavior -=item Tying Arrays +=item syswrite() ease-of-use -TIEARRAY classname, LIST, FETCH this, index, STORE this, index, value, -DESTROY this +=item Better syntax checks on parenthesized unary operators -=item Tying Hashes +=item Bit operators support full native integer width -USER, HOME, CLOBBER, LIST, TIEHASH classname, LIST, FETCH this, key, STORE -this, key, value, DELETE this, key, CLEAR this, EXISTS this, key, FIRSTKEY -this, NEXTKEY this, lastkey, DESTROY this +=item Improved security features -=item Tying FileHandles +=item More functional bareword prototype (*) -TIEHANDLE classname, LIST, WRITE this, LIST, PRINT this, LIST, PRINTF this, -LIST, READ this, LIST, READLINE this, GETC this, CLOSE this, DESTROY this +=item C and C may be overridden -=item The C Gotcha +=item $^X variables may now have names longer than one character -=back +=item New variable $^C reflects C<-c> switch -=item SEE ALSO +=item New variable $^V contains Perl version as a string -=item BUGS +=item Optional Y2K warnings -=item AUTHOR +=item Arrays now always interpolate into double-quoted strings =back -=head2 perlbot - Bag'o Object Tricks (the BOT) +=item Modules and Pragmata =over -=item DESCRIPTION +=item Modules -=item OO SCALING TIPS +attributes, B, Benchmark, ByteLoader, constant, charnames, Data::Dumper, +DB, DB_File, Devel::DProf, Devel::Peek, Dumpvalue, DynaLoader, English, +Env, Fcntl, File::Compare, File::Find, File::Glob, File::Spec, +File::Spec::Functions, Getopt::Long, IO, JPL, lib, Math::BigInt, +Math::Complex, Math::Trig, Pod::Parser, Pod::InputObjects, Pod::Checker, +podchecker, Pod::ParseUtils, Pod::Find, Pod::Select, podselect, Pod::Usage, +pod2usage, Pod::Text and Pod::Man, SDBM_File, Sys::Syslog, Sys::Hostname, +Term::ANSIColor, Time::Local, Win32, XSLoader, DBM Filters -=item INSTANCE VARIABLES +=item Pragmata -=item INSTANCE VARIABLE INHERITANCE +=back -=item OBJECT RELATIONSHIPS +=item Utility Changes -=item OVERRIDING SUPERCLASS METHODS +=over -=item USING RELATIONSHIP WITH SDBM +=item dprofpp -=item THINKING OF CODE REUSE +=item find2perl -=item CLASS CONTEXT AND THE OBJECT +=item h2xs -=item INHERITING A CONSTRUCTOR +=item perlcc -=item DELEGATION +=item perldoc + +=item The Perl Debugger =back -=head2 perlipc - Perl interprocess communication (signals, fifos, pipes, -safe subprocesses, sockets, and semaphores) +=item Improved Documentation -=over +perlapi.pod, perlboot.pod, perlcompile.pod, perldbmfilter.pod, +perldebug.pod, perldebguts.pod, perlfork.pod, perlfilter.pod, perlhack.pod, +perlintern.pod, perllexwarn.pod, perlnumber.pod, perlopentut.pod, +perlreftut.pod, perltootc.pod, perltodo.pod, perlunicode.pod -=item DESCRIPTION +=item Performance enhancements -=item Signals +=over -=item Named Pipes +=item Simple sort() using { $a <=> $b } and the like are optimized -=over +=item Optimized assignments to lexical variables -=item WARNING +=item Faster subroutine calls + +=item delete(), each(), values() and hash iteration are faster =back -=item Using open() for IPC +=item Installation and Configuration Improvements =over -=item Filehandles +=item -Dusethreads means something different -=item Background Processes +=item New Configure flags -=item Complete Dissociation of Child from Parent +=item Threadedness and 64-bitness now more daring -=item Safe Pipe Opens +=item Long Doubles -=item Bidirectional Communication with Another Process +=item -Dusemorebits -=item Bidirectional Communication with Yourself +=item -Duselargefiles + +=item installusrbinperl + +=item SOCKS support + +=item C<-A> flag + +=item Enhanced Installation Directories =back -=item Sockets: Client/Server Communication +=item Platform specific changes =over -=item Internet Line Terminators +=item Supported platforms -=item Internet TCP Clients and Servers +=item DOS -=item Unix-Domain TCP Clients and Servers +=item OS390 (OpenEdition MVS) + +=item VMS + +=item Win32 =back -=item TCP Clients with IO::Socket +=item Significant bug fixes =over -=item A Simple Client +=item on empty files -C, C, C +=item C improvements -=item A Webget Client +=item All compilation errors are true errors -=item Interactive Client with IO::Socket +=item Implicitly closed filehandles are safer -=back +=item Behavior of list slices is more consistent -=item TCP Servers with IO::Socket +=item C<(\$)> prototype and C<$foo{a}> -Proto, LocalPort, Listen, Reuse +=item C and AUTOLOAD -=item UDP: Message Passing +=item C<-bareword> allowed under C -=item SysV IPC +=item Failures in DESTROY() -=item NOTES +=item Locale bugs fixed + +=item Memory leaks + +=item Spurious subroutine stubs after failed subroutine calls -=item BUGS +=item Taint failures under C<-U> -=item AUTHOR +=item END blocks and the C<-c> switch -=item SEE ALSO +=item Potential to leak DATA filehandles =back -=head2 perldbmfilter - Perl DBM Filters - -=over +=item New or Changed Diagnostics -=item SYNOPSIS +"%s" variable %s masks earlier declaration in same %s, "my sub" not yet +implemented, "our" variable %s redeclared, '!' allowed only after types %s, +/ cannot take a count, / must be followed by a, A or Z, / must be followed +by a*, A* or Z*, / must follow a numeric type, /%s/: Unrecognized escape +\\%c passed through, /%s/: Unrecognized escape \\%c in character class +passed through, /%s/ should probably be written as "%s", %s() called too +early to check prototype, %s argument is not a HASH or ARRAY element, %s +argument is not a HASH or ARRAY element or slice, %s argument is not a +subroutine name, %s package attribute may clash with future reserved word: +%s, (in cleanup) %s, <> should be quotes, Attempt to join self, Bad evalled +substitution pattern, Bad realloc() ignored, Bareword found in conditional, +Binary number > 0b11111111111111111111111111111111 non-portable, Bit vector +size > 32 non-portable, Buffer overflow in prime_env_iter: %s, Can't check +filesystem of script "%s", Can't declare class for non-scalar %s in "%s", +Can't declare %s in "%s", Can't ignore signal CHLD, forcing to default, +Can't modify non-lvalue subroutine call, Can't read CRTL environ, Can't +remove %s: %s, skipping file, Can't return %s from lvalue subroutine, Can't +weaken a nonreference, Character class [:%s:] unknown, Character class +syntax [%s] belongs inside character classes, Constant is not %s reference, +constant(%s): %s, CORE::%s is not a keyword, defined(@array) is deprecated, +defined(%hash) is deprecated, Did not produce a valid header, (Did you mean +"local" instead of "our"?), Document contains no data, entering effective +%s failed, false [] range "%s" in regexp, Filehandle %s opened only for +output, flock() on closed filehandle %s, Global symbol "%s" requires +explicit package name, Hexadecimal number > 0xffffffff non-portable, +Ill-formed CRTL environ value "%s", Ill-formed message in prime_env_iter: +|%s|, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal +number of bits in vec, Integer overflow in %s number, Invalid %s attribute: +%s, Invalid %s attributes: %s, invalid [] range "%s" in regexp, Invalid +separator character %s in attribute list, Invalid separator character %s in +subroutine attribute list, leaving effective %s failed, Lvalue subs +returning %s not implemented yet, Method %s not permitted, Missing +%sbrace%s on \N{}, Missing command in piped open, Missing name in "my sub", +No %s specified for -%c, No package name allowed for variable %s in "our", +No space allowed after -%c, no UTC offset information; assuming local time +is UTC, Octal number > 037777777777 non-portable, panic: del_backref, +panic: kid popen errno read, panic: magic_killbackrefs, Parentheses missing +around "%s" list, Possible unintended interpolation of %s in string, +Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : ATTRS" +instead, Premature end of script headers, Repeat count in pack overflows, +Repeat count in unpack overflows, realloc() of freed memory ignored, +Reference is already weak, setpgrp can't take arguments, Strange *+?{} on +zero-length expression, switching effective %s is not implemented, This +Perl can't reset CRTL environ elements (%s), This Perl can't set CRTL +environ elements (%s=%s), Too late to run %s block, Unknown open() mode +'%s', Unknown process %x sent message to prime_env_iter: %s, Unrecognized +escape \\%c passed through, Unterminated attribute parameter in attribute +list, Unterminated attribute list, Unterminated attribute parameter in +subroutine attribute list, Unterminated subroutine attribute list, Value of +CLI symbol "%s" too long, Version number must be a constant number -=item DESCRIPTION +=item New tests -B, B, B, -B +=item Incompatible Changes =over -=item The Filter - -=item An Example -- the NULL termination problem. - -=item Another Example -- Key is a C int. +=item Perl Source Incompatibilities -=back +CHECK is a new keyword, Treatment of list slices of undef has changed, +Format of $English::PERL_VERSION is different, Literals of the form +C<1.2.3> parse differently, Possibly changed pseudo-random number +generator, Hashing function for hash keys has changed, C fails on +read only values, Close-on-exec bit may be set on pipe and socket handles, +Writing C<"$$1"> to mean C<"${$}1"> is unsupported, delete(), values() and +C<\(%h)> operate on aliases to values, not copies, vec(EXPR,OFFSET,BITS) +enforces powers-of-two BITS, Text of some diagnostic output has changed, +C<%@> has been removed, Parenthesized not() behaves like a list operator, +Semantics of bareword prototype C<(*)> have changed, Semantics of bit +operators may have changed on 64-bit platforms, More builtins taint their +results -=item SEE ALSO +=item C Source Incompatibilities -=item AUTHOR +C, C, C -=back +=item Compatible C Source API Changes -=head2 perldebug - Perl debugging +C is now C -=over +=item Binary Incompatibilities -=item DESCRIPTION +=back -=item The Perl Debugger +=item Known Problems =over -=item Debugger Commands - -h [command], p expr, x expr, V [pkg [vars]], X [vars], T, s [expr], n -[expr], r, , c [line|sub], l, l min+incr, l min-max, l line, l subname, --, w [line], f filename, /pattern/, ?pattern?, L, S [[!]regex], t, t expr, -b [line] [condition], b subname [condition], b postpone subname -[condition], b load filename, b compile subname, d [line], D, a [line] -command, a [line], A, W expr, W, O booloption .., O anyoption? .., O -option=value .., < ?, < [ command ], << command, > ?, > command, >> -command, { ?, { [ command ], {{ command, ! number, ! -number, ! pattern, !! -cmd, H -number, q or ^D, R, |dbcmd, ||dbcmd, command, m expr, man [manpage] - -=item Configurable Options +=item Thread test failures -C, C, C, C, C, -C, C, C, C, C, -C, C, C, C, C, -C, C, C, C, C, -C, C, C, C, C, -C, C, C, C, C +=item EBCDIC platforms not supported -=item Debugger input/output +=item In 64-bit HP-UX the lib/io_multihomed test may hang -Prompt, Multiline commands, Stack backtrace, Line Listing Format, Frame -listing +=item NEXTSTEP 3.3 POSIX test failure -=item Debugging compile-time statements +=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with +gcc -=item Debugger Customization +=item UNICOS/mk CC failures during Configure run -=item Readline Support +=item Arrow operator and arrays -=item Editor Support for Debugging +=item Experimental features -=item The Perl Profiler +Threads, Unicode, 64-bit support, Lvalue subroutines, Weak references, The +pseudo-hash data type, The Compiler suite, Internal implementation of file +globbing, The DB module, The regular expression constructs C<(?{ code })> +and C<(??{ code })> =back -=item Debugging regular expressions +=item Obsolete Diagnostics -=item Debugging memory usage +Character class syntax [: :] is reserved for future extensions, Ill-formed +logical name |%s| in prime_env_iter, In string, @%s now must be written as +\@%s, Probable precedence problem on %s, regexp too big, Use of "$$" +to mean "${$}" is deprecated + +=item Reporting Bugs =item SEE ALSO -=item BUGS +=item HISTORY =back -=head2 perlnumber - semantics of numbers and numeric operations in Perl +=head2 perl5005delta, perldelta - what's new for perl5.005 =over -=item SYNOPSIS - =item DESCRIPTION -=item Storing numbers - -=item Numeric operators and numeric conversions +=item About the new versioning system -=item Flavors of Perl numeric operations +=item Incompatible Changes -Arithmetic operators except, C, Arithmetic operators except, -C, Bitwise operators, C, Bitwise operators, C, Operators which expect an integer, Operators which expect a -string +=over -=item AUTHOR +=item WARNING: This version is not binary compatible with Perl 5.004. -=item SEE ALSO +=item Default installation structure has changed -=back +=item Perl Source Compatibility -=head2 perldebguts - Guts of Perl debugging +=item C Source Compatibility -=over +Core sources now require ANSI C compiler, All Perl global variables must +now be referenced with an explicit prefix, Enabling threads has source +compatibility issues -=item DESCRIPTION +=item Binary Compatibility -=item Debugger Internals +=item Security fixes may affect compatibility -=over +=item Relaxed new mandatory warnings introduced in 5.004 -=item Writing Your Own Debugger +=item Licensing =back -=item Frame Listing Output Examples - -=item Debugging regular expressions +=item Core Changes =over -=item Compile-time output +=item Threads -C I C I, C I C -I, C, C, C -I, C, C, C, C, C, C, -C +=item Compiler -=item Types of nodes +=item Regular Expressions -=item Run-time output +Many new and improved optimizations, Many bug fixes, New regular expression +constructs, New operator for precompiled regular expressions, Other +improvements, Incompatible changes -=back +=item Improved malloc() -=item Debugging Perl memory usage +=item Quicksort is internally implemented -=over +=item Reliable signals -=item Using C<$ENV{PERL_DEBUG_MSTATS}> +=item Reliable stack pointers -C, Free/Used, C, C, C, C, C +=item More generous treatment of carriage returns -=item Example of using B<-DL> switch +=item Memory leaks -C<717>, C<002>, C<054>, C<602>, C<702>, C<704> +=item Better support for multiple interpreters -=item B<-DL> details +=item Behavior of local() on array and hash elements is now well-defined -C, C, C +=item C<%!> is transparently tied to the L module -=item Limitations of B<-DL> statistics +=item Pseudo-hashes are supported -=back +=item C is supported -=item SEE ALSO +=item Keywords can be globally overridden -=back +=item C<$^E> is meaningful on Win32 -=head2 perldiag - various Perl diagnostics +=item C optimized -=over +=item C can be used as implicitly quoted package name -=item DESCRIPTION +=item C tests existence of a package -=back +=item Better locale support -=head2 perlsec - Perl security +=item Experimental support for 64-bit platforms -=over +=item prototype() returns useful results on builtins -=item DESCRIPTION +=item Extended support for exception handling -=over +=item Re-blessing in DESTROY() supported for chaining DESTROY() methods -=item Laundering and Detecting Tainted Data +=item All C format conversions are handled internally -=item Switches On the "#!" Line +=item New C keyword -=item Cleaning Up Your Path +=item New C keyword -=item Security Bugs +=item New C operator -=item Protecting Your Programs +=item C is now a reserved word -=back +=item Tied arrays are now fully supported -=item SEE ALSO +=item Tied handles support is better + +=item 4th argument to substr + +=item Negative LENGTH argument to splice + +=item Magic lvalues are now more magical + +=item <> now reads in records =back -=head2 perltrap - Perl traps for the unwary +=item Supported Platforms =over -=item DESCRIPTION +=item New Platforms -=over +=item Changes in existing support -=item Awk Traps +=back -=item C Traps +=item Modules and Pragmata -=item Sed Traps +=over -=item Shell Traps +=item New Modules -=item Perl Traps +B, Data::Dumper, Dumpvalue, Errno, File::Spec, ExtUtils::Installed, +ExtUtils::Packlist, Fatal, IPC::SysV, Test, Tie::Array, Tie::Handle, +Thread, attrs, fields, re -=item Perl4 to Perl5 Traps +=item Changes in existing modules -Discontinuance, Deprecation, and BugFix traps, Parsing Traps, Numerical -Traps, General data type traps, Context Traps - scalar, list contexts, -Precedence Traps, General Regular Expression Traps using s///, etc, -Subroutine, Signal, Sorting Traps, OS Traps, DBM Traps, Unclassified Traps +Benchmark, Carp, CGI, Fcntl, Math::Complex, Math::Trig, POSIX, DB_File, +MakeMaker, CPAN, Cwd, Benchmark -=item Discontinuance, Deprecation, and BugFix traps +=back -Discontinuance, Deprecation, BugFix, Discontinuance, Discontinuance, -Discontinuance, BugFix, Discontinuance, Discontinuance, BugFix, -Discontinuance, Deprecation, Discontinuance, Discontinuance +=item Utility Changes -=item Parsing Traps +=item Documentation Changes + +=item New Diagnostics + +Ambiguous call resolved as CORE::%s(), qualify as such or use &, Bad index +while coercing array into hash, Bareword "%s" refers to nonexistent +package, Can't call method "%s" on an undefined value, Can't check +filesystem of script "%s" for nosuid, Can't coerce array into hash, Can't +goto subroutine from an eval-string, Can't localize pseudo-hash element, +Can't use %%! because Errno.pm is not available, Cannot find an opnumber +for "%s", Character class syntax [. .] is reserved for future extensions, +Character class syntax [: :] is reserved for future extensions, Character +class syntax [= =] is reserved for future extensions, %s: Eval-group in +insecure regular expression, %s: Eval-group not allowed, use re 'eval', %s: +Eval-group not allowed at run time, Explicit blessing to '' (assuming +package main), Illegal hex digit ignored, No such array field, No such +field "%s" in variable %s of type %s, Out of memory during ridiculously +large request, Range iterator outside integer range, Recursive inheritance +detected while looking for method '%s' in package '%s', Reference found +where even-sized list expected, Undefined value assigned to typeglob, Use +of reserved word "%s" is deprecated, perl: warning: Setting locale failed -Parsing, Parsing, Parsing, Parsing +=item Obsolete Diagnostics -=item Numerical Traps +Can't mktemp(), Can't write to temp file for B<-e>: %s, Cannot open +temporary file, regexp too big -Numerical, Numerical, Numerical, Bitwise string ops +=item Configuration Changes -=item General data type traps +=item BUGS -(Arrays), (Arrays), (Hashes), (Globs), (Globs), (Scalar String), -(Constants), (Scalars), (Variable Suicide) +=item SEE ALSO -=item Context Traps - scalar, list contexts +=item HISTORY -(list context), (scalar context), (scalar context), (list, builtin) +=back -=item Precedence Traps +=head2 perl5004delta, perldelta - what's new for perl5.004 -Precedence, Precedence, Precedence, Precedence, Precedence, Precedence, -Precedence +=over -=item General Regular Expression Traps using s///, etc. +=item DESCRIPTION -Regular Expression, Regular Expression, Regular Expression, Regular -Expression, Regular Expression, Regular Expression, Regular Expression, -Regular Expression +=item Supported Environments -=item Subroutine, Signal, Sorting Traps +=item Core Changes -(Signals), (Sort Subroutine), warn() won't let you specify a filehandle +=over -=item OS Traps +=item List assignment to %ENV works -(SysV), (SysV) +=item "Can't locate Foo.pm in @INC" error now lists @INC -=item Interpolation Traps +=item Compilation option: Binary compatibility with 5.003 -Interpolation, Interpolation, Interpolation, Interpolation, Interpolation, -Interpolation, Interpolation, Interpolation, Interpolation +=item $PERL5OPT environment variable -=item DBM Traps +=item Limitations on B<-M>, B<-m>, and B<-T> options -DBM, DBM +=item More precise warnings -=item Unclassified Traps +=item Deprecated: Inherited C for non-methods -C/C trap using returned value, C on empty string with -LIMIT specified +=item Previously deprecated %OVERLOAD is no longer usable -=back +=item Subroutine arguments created only when they're modified -=back +=item Group vector changeable with C<$)> -=head2 perlport - Writing portable Perl +=item Fixed parsing of $$, &$, etc. -=over +=item Fixed localization of $, $&, etc. -=item DESCRIPTION +=item No resetting of $. on implicit close -Not all Perl programs have to be portable, Nearly all of Perl already I -portable +=item C may return undef -=item ISSUES +=item C determines value of EXPR in scalar context -=over +=item Changes to tainting checks -=item Newlines +No glob() or <*>, No spawning if tainted $CDPATH, $ENV, $BASH_ENV, No +spawning if tainted $TERM doesn't look like a terminal name -=item Numbers endianness and Width +=item New Opcode module and revised Safe module -=item Files and Filesystems +=item Embedding improvements -=item System Interaction +=item Internal change: FileHandle class based on IO::* classes -=item Interprocess Communication (IPC) +=item Internal change: PerlIO abstraction interface -=item External Subroutines (XS) +=item New and changed syntax -=item Standard Modules +$coderef->(PARAMS) -=item Time and Date +=item New and changed builtin constants -=item Character sets and character encoding +__PACKAGE__ -=item Internationalisation +=item New and changed builtin variables -=item System Resources +$^E, $^H, $^M -=item Security +=item New and changed builtin functions -=item Style +delete on slices, flock, printf and sprintf, keys as an lvalue, my() in +Control Structures, pack() and unpack(), sysseek(), use VERSION, use Module +VERSION LIST, prototype(FUNCTION), srand, $_ as Default, C does not +reset search position on failure, C ignores whitespace before ?*+{}, +nested C closures work now, formats work right on changing lexicals -=back +=item New builtin methods -=item CPAN Testers +isa(CLASS), can(METHOD), VERSION( [NEED] ) -Mailing list: cpan-testers@perl.org, Testing results: -http://testers.cpan.org/ +=item TIEHANDLE now supported -=item PLATFORMS +TIEHANDLE classname, LIST, PRINT this, LIST, PRINTF this, LIST, READ this +LIST, READLINE this, GETC this, DESTROY this -=over +=item Malloc enhancements -=item Unix +-DPERL_EMERGENCY_SBRK, -DPACK_MALLOC, -DTWO_POT_OPTIMIZE -=item DOS and Derivatives +=item Miscellaneous efficiency enhancements -Build instructions for OS/2, L +=back -=item S +=item Support for More Operating Systems -=item VMS +=over -=item VOS +=item Win32 -=item EBCDIC Platforms +=item Plan 9 -=item Acorn RISC OS +=item QNX -=item Other perls +=item AmigaOS =back -=item FUNCTION IMPLEMENTATIONS +=item Pragmata + +use autouse MODULE => qw(sub1 sub2 sub3), use blib, use blib 'dir', use +constant NAME => VALUE, use locale, use ops, use vmsish + +=item Modules =over -=item Alphabetical Listing of Perl Functions +=item Required Updates --I FILEHANDLE, -I EXPR, -I, alarm SECONDS, alarm, binmode -FILEHANDLE, chmod LIST, chown LIST, chroot FILENAME, chroot, crypt -PLAINTEXT,SALT, dbmclose HASH, dbmopen HASH,DBNAME,MODE, dump LABEL, exec -LIST, fcntl FILEHANDLE,FUNCTION,SCALAR, flock FILEHANDLE,OPERATION, fork, -getlogin, getpgrp PID, getppid, getpriority WHICH,WHO, getpwnam NAME, -getgrnam NAME, getnetbyname NAME, getpwuid UID, getgrgid GID, getnetbyaddr -ADDR,ADDRTYPE, getprotobynumber NUMBER, getservbyport PORT,PROTO, getpwent, -getgrent, gethostent, getnetent, getprotoent, getservent, setpwent, -setgrent, sethostent STAYOPEN, setnetent STAYOPEN, setprotoent STAYOPEN, -setservent STAYOPEN, endpwent, endgrent, endhostent, endnetent, -endprotoent, endservent, getsockopt SOCKET,LEVEL,OPTNAME, glob EXPR, glob, -ioctl FILEHANDLE,FUNCTION,SCALAR, kill SIGNAL, LIST, link OLDFILE,NEWFILE, -lstat FILEHANDLE, lstat EXPR, lstat, msgctl ID,CMD,ARG, msgget KEY,FLAGS, -msgsnd ID,MSG,FLAGS, msgrcv ID,VAR,SIZE,TYPE,FLAGS, open FILEHANDLE,EXPR, -open FILEHANDLE, pipe READHANDLE,WRITEHANDLE, readlink EXPR, readlink, -select RBITS,WBITS,EBITS,TIMEOUT, semctl ID,SEMNUM,CMD,ARG, semget -KEY,NSEMS,FLAGS, semop KEY,OPSTRING, setgrent, setpgrp PID,PGRP, -setpriority WHICH,WHO,PRIORITY, setpwent, setsockopt -SOCKET,LEVEL,OPTNAME,OPTVAL, shmctl ID,CMD,ARG, shmget KEY,SIZE,FLAGS, -shmread ID,VAR,POS,SIZE, shmwrite ID,STRING,POS,SIZE, socketpair -SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL, stat FILEHANDLE, stat EXPR, stat, -symlink OLDFILE,NEWFILE, syscall LIST, sysopen -FILEHANDLE,FILENAME,MODE,PERMS, system LIST, times, truncate -FILEHANDLE,LENGTH, truncate EXPR,LENGTH, umask EXPR, umask, utime LIST, -wait, waitpid PID,FLAGS +=item Installation directories -=back +=item Module information summary -=item CHANGES +=item Fcntl -v1.47, 22 March 2000, v1.46, 12 February 2000, v1.45, 20 December 1999, -v1.44, 19 July 1999, v1.43, 24 May 1999, v1.42, 22 May 1999, v1.41, 19 May -1999, v1.40, 11 April 1999, v1.39, 11 February 1999, v1.38, 31 December -1998, v1.37, 19 December 1998, v1.36, 9 September 1998, v1.35, 13 August -1998, v1.33, 06 August 1998, v1.32, 05 August 1998, v1.30, 03 August 1998, -v1.23, 10 July 1998 +=item IO -=item Supported Platforms +=item Math::Complex -=item SEE ALSO +=item Math::Trig -=item AUTHORS / CONTRIBUTORS +=item DB_File -=item VERSION +=item Net::Ping + +=item Object-oriented overrides for builtin operators =back -=head2 perlstyle - Perl style guide +=item Utility Changes =over -=item DESCRIPTION - -=back +=item pod2html -=head2 perlpod - plain old documentation +Sends converted HTML to standard output -=over +=item xsubpp -=item DESCRIPTION +C XSUBs now default to returning nothing -=over +=back -=item Verbatim Paragraph +=item C Language API Changes -=item Command Paragraph +C and C, C, Extended API for +manipulating hashes -=item Ordinary Block of Text +=item Documentation Changes -=item The Intent +L, L, L, L, L, +L, L, L -=item Embedding Pods in Perl Modules +=item New Diagnostics -=item Common Pod Pitfalls +"my" variable %s masks earlier declaration in same scope, %s argument is +not a HASH element or slice, Allocation too large: %lx, Allocation too +large, Applying %s to %s will act on scalar(%s), Attempt to free +nonexistent shared string, Attempt to use reference as lvalue in substr, +Bareword "%s" refers to nonexistent package, Can't redefine active sort +subroutine %s, Can't use bareword ("%s") as %s ref while "strict refs" in +use, Cannot resolve method `%s' overloading `%s' in package `%s', Constant +subroutine %s redefined, Constant subroutine %s undefined, Copy method did +not return a reference, Died, Exiting pseudo-block via %s, Identifier too +long, Illegal character %s (carriage return), Illegal switch in PERL5OPT: +%s, Integer overflow in hex number, Integer overflow in octal number, +internal error: glob failed, Invalid conversion in %s: "%s", Invalid type +in pack: '%s', Invalid type in unpack: '%s', Name "%s::%s" used only once: +possible typo, Null picture in formline, Offset outside string, Out of +memory!, Out of memory during request for %s, panic: frexp, Possible +attempt to put comments in qw() list, Possible attempt to separate words +with commas, Scalar value @%s{%s} better written as $%s{%s}, Stub found +while resolving method `%s' overloading `%s' in package `%s', Too late for +"B<-T>" option, untie attempted while %d inner references still exist, +Unrecognized character %s, Unsupported function fork, Use of "$$" to +mean "${$}" is deprecated, Value of %s can be "0"; test with +defined(), Variable "%s" may be unavailable, Variable "%s" will not stay +shared, Warning: something's wrong, Ill-formed logical name |%s| in +prime_env_iter, Got an error from DosAllocMem, Malformed PERLLIB_PREFIX, +PERL_SH_DIR too long, Process terminated by SIG%s -=back +=item BUGS =item SEE ALSO -=item AUTHOR +=item HISTORY =back -=head2 perlbook - Perl book information +=head2 perlamiga - Perl under Amiga OS (possibly very outdated information) =over -=item DESCRIPTION +=item SYNOPSIS =back -=head2 perlembed - how to embed perl in your C program - =over =item DESCRIPTION =over -=item PREAMBLE +=item Prerequisites -B, B, B, B, B +B, B -=item ROADMAP +=item Starting Perl programs under AmigaOS -=item Compiling your C program +=item Shortcomings of Perl under AmigaOS -=item Adding a Perl interpreter to your C program +fork(), some features of the UNIX filesystem regarding link count and file +dates, inplace operation (the -i switch) without backup file, umask() +works, but the correct permissions are only set when the file is +finally close()d -=item Calling a Perl subroutine from your C program +=back -=item Evaluating a Perl statement from your C program +=item INSTALLATION -=item Performing Perl pattern matches and substitutions from your C program +=item Accessing documentation -=item Fiddling with the Perl stack from your C program +=over -=item Maintaining a persistent interpreter +=item Manpages -=item Maintaining multiple interpreter instances +=item B -=item Using Perl modules, which themselves use C libraries, from your C -program +=item B C files + +=item C docs =back -=item Embedding Perl under Win32 +=item BUILD -=item MORAL +=over + +=item Prerequisites + +=item Getting the perl source + +=item Making + +=item Testing + +=item Installing the built perl + +=back =item AUTHOR -=item COPYRIGHT +=item SEE ALSO =back -=head2 perlapio - perl's IO abstraction interface. +=head2 perlcygwin, README.cygwin - Perl for Cygwin =over =item SYNOPSIS -=item DESCRIPTION - -B, B, B, B, -B, B, -B, B, -B, B, -B, B, B, -B, B, B, -B, B, B, -B, B, B, -B, B, B, -B, B +=item PREREQUISITES =over -=item Co-existence with stdio +=item Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it) -B, B, -B, B, B, -B, B, B, -B, B, -B, B, B, -B, B +=item Cygwin Configuration -=back +C, I, Permissions =back -=head2 perlxs - XS language reference manual +=item CONFIGURE =over -=item DESCRIPTION - -=over +=item Strip Binaries -=item Introduction +=item Optional Libraries -=item On The Road +C<-lcrypt>, C<-lgdbm> (C), C<-ldb> (C), +C<-lcygipc> (C) -=item The Anatomy of an XSUB +=item Configure-time Options -=item The Argument Stack +C<-Uusedl>, C<-Uusemymalloc>, C<-Dusemultiplicity>, C<-Duseperlio>, +C<-Duse64bitint>, C<-Duselongdouble>, C<-Dusethreads>, C<-Duselargefiles> -=item The RETVAL Variable +=item Suspicious Warnings -=item The MODULE Keyword +Whoa There, I, Win9x and C, Checking how std your stdio +is.., Compiler/Preprocessor defines -=item The PACKAGE Keyword +=back -=item The PREFIX Keyword +=item MAKE -=item The OUTPUT: Keyword +=over -=item The CODE: Keyword +=item Warnings -=item The INIT: Keyword +=item ld2 -=item The NO_INIT Keyword +=back -=item Initializing Function Parameters +=item TEST -=item Default Parameter Values +=over -=item The PREINIT: Keyword +=item File Permissions -=item The SCOPE: Keyword +=item Hard Links -=item The INPUT: Keyword +=item Filetime Granularity -=item Variable-length Parameter Lists +=item Tainting Checks -=item The C_ARGS: Keyword +=item /etc/group -=item The PPCODE: Keyword +=item Script Portability -=item Returning Undef And Empty Lists +Pathnames, Text/Binary, F<.exe>, chown(), Miscellaneous -=item The REQUIRE: Keyword +=back -=item The CLEANUP: Keyword +=item INSTALL -=item The BOOT: Keyword +=item MANIFEST -=item The VERSIONCHECK: Keyword +Documentation, Build, Configure, Make, Install, Tests, Compiled Perl +Source, Compiled Module Source, Perl Modules/Scripts -=item The PROTOTYPES: Keyword +=item BUGS -=item The PROTOTYPE: Keyword +=item AUTHORS -=item The ALIAS: Keyword +=item HISTORY -=item The INTERFACE: Keyword +=back -=item The INTERFACE_MACRO: Keyword +=head2 perldos - Perl under DOS, W31, W95. -=item The INCLUDE: Keyword +=over -=item The CASE: Keyword +=item SYNOPSIS -=item The & Unary Operator +=item DESCRIPTION -=item Inserting Comments and C Preprocessor Directives +=over -=item Using XS With C++ +=item Prerequisites -=item Interface Strategy +DJGPP, Pthreads -=item Perl Objects And C Structures +=item Shortcomings of Perl under DOS -=item The Typemap +=item Building -=back +=item Testing -=item EXAMPLES +=item Installation -=item XS VERSION +=back =item AUTHOR +=item SEE ALSO + =back -=head2 perlxstut, perlXStut - Tutorial for writing XSUBs +=head2 perlhpux, README.hpux - Perl version 5 on Hewlett-Packard Unix +(HP-UX) systems =over =item DESCRIPTION -=item SPECIAL NOTES - =over -=item make - -=item Version caveat - -=item Dynamic Loading versus Static Loading - -=back - -=item TUTORIAL - -=over +=item Compiling Perl 5 on HP-UX -=item EXAMPLE 1 +=item PA-RISC -=item EXAMPLE 2 +=item PA-RISC 1.0 -=item What has gone on? +=item PA-RISC 1.1 -=item Writing good test scripts +=item PA-RISC 2.0 -=item EXAMPLE 3 +=item Portability Between PA-RISC Versions -=item What's new here? +=item Building Dynamic Extensions on HP-UX -=item Input and Output Parameters +=item The HP ANSI C Compiler -=item The XSUBPP Program +=item Using Large Files with Perl -=item The TYPEMAP file +=item Threaded Perl -=item Warning about Output Arguments +=item 64-bit Perl -=item EXAMPLE 4 +=item GDBM and Threads -=item What has happened here? +=item NFS filesystems and utime(2) -=item Anatomy of .xs file +=back -=item Getting the fat out of XSUBs +=item AUTHOR -=item More about XSUB arguments +=item DATE -=item The Argument Stack +=back -=item Extending your Extension +=head2 perlmachten, README.machten - Perl version 5 on Power MachTen +systems -=item Documenting your Extension +=over -=item Installing your Extension +=item DESCRIPTION -=item EXAMPLE 5 +=over -=item New Things in this Example +=item Compiling Perl 5 on MachTen -=item EXAMPLE 6 +=item Failures during C -=item New Things in this Example +op/lexassign.t, pragma/warnings.t -=item EXAMPLE 7 (Coming Soon) +=item Building external modules -=item EXAMPLE 8 (Coming Soon) +=back -=item EXAMPLE 9 (Coming Soon) +=item AUTHOR -=item Troubleshooting these Examples +=item DATE =back -=item See also - -=item Author +=head2 perlos2 - Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT. =over -=item Last Changed - -=back +=item SYNOPSIS =back -=head2 perlguts - Introduction to the Perl API - =over -=item DESCRIPTION +=item Target -=item Variables +=item Other OSes -=over +=item Prerequisites -=item Datatypes +EMX, RSX, HPFS, pdksh -=item What is an "IV"? +=item Starting Perl programs under OS/2 (and DOS and...) -=item Working with SVs +=item Starting OS/2 (and DOS) programs under Perl -=item What's Really Stored in an SV? +=back -=item Working with AVs +=over -=item Working with HVs +=item Frequently asked questions -=item Hash API Extensions +=over -=item References +=item I cannot run external programs -=item Blessed References and Class Objects +=item I cannot embed perl into my program, or use F from my +program. -=item Creating New Variables +Is your program EMX-compiled with C<-Zmt -Zcrtdll>?, Did you use +L? -=item Reference Counts and Mortality +=item C<``> and pipe-C do not work under DOS. -=item Stashes and Globs +=item Cannot start C -=item Double-Typed SVs +=back -=item Magic Variables +=item INSTALLATION -=item Assigning Magic +=over -=item Magic Virtual Tables +=item Automatic binary installation -=item Finding Magic +C, C, F -=item Understanding the Magic of Tied Hashes and Arrays +=item Manual binary installation -=item Localizing changes +Perl VIO and PM executables (dynamically linked), Perl_ VIO executable +(statically linked), Executables for Perl utilities, Main Perl library, +Additional Perl modules, Tools to compile Perl modules, Manpages for Perl +and utilities, Manpages for Perl modules, Source for Perl documentation, +Perl manual in F<.INF> format, Pdksh -C, C, C, C, -C, C, C, C, C, C, C, C, C, C, -C, C, C, C, C, C, C, -C +=item B =back -=item Subroutines +=item Accessing documentation =over -=item XSUBs and the Argument Stack +=item OS/2 F<.INF> file -=item Calling Perl Routines from within C Programs +=item Plain text -=item Memory Allocation +=item Manpages -=item PerlIO +=item HTML -=item Putting a C value on Perl stack +=item GNU C files -=item Scratchpads +=item F<.PDF> files -=item Scratchpads and recursion +=item C docs =back -=item Compiled code +=item BUILD =over -=item Code tree +=item Prerequisites -=item Examining the tree +=item Getting perl source -=item Compile pass 1: check routines +=item Application of the patches -=item Compile pass 1a: constant folding +=item Hand-editing -=item Compile pass 2: context propagation +=item Making -=item Compile pass 3: peephole optimization +=item Testing + +A lot of C, Process terminated by SIGTERM/SIGINT, F, +F, F, F, F + +=item Installing the built perl + +=item C-style build =back -=item How multiple interpreters and concurrency are supported +=item Build FAQ =over -=item Background and PERL_IMPLICIT_CONTEXT +=item Some C became C<\> in pdksh. -=item How do I use all this in extensions? +=item C<'errno'> - unresolved external -=item Future Plans and PERL_IMPLICIT_SYS +=item Problems with tr or sed -=back +=item Some problem (forget which ;-) -=item AUTHORS +=item Library ... not found -=item SEE ALSO +=item Segfault in make =back -=head2 perlcall - Perl calling conventions from C +=item Specific (mis)features of OS/2 port =over -=item DESCRIPTION +=item C, C -An Error Handler, An Event Driven Program +=item C -=item THE CALL_ FUNCTIONS +=item C on the first line -call_sv, call_pv, call_method, call_argv +=item Additional modules: -=item FLAG VALUES +=item Prebuilt methods: + +C, C, C, + C, C, +C, C, +C, C, +C, C, +C + +=item Misfeatures + +=item Modifications + +C, C, C, C, C, C + +=back + +=item Perl flavors =over -=item G_VOID +=item F -=item G_SCALAR +=item F -=item G_ARRAY +=item F -=item G_DISCARD +=item F -=item G_NOARGS +=item Why strange names? -=item G_EVAL +=item Why dynamic linking? -=item G_KEEPERR +=item Why chimera build? -=item Determining the Context +explicit fork(), open FH, "|-", open FH, "-|" =back -=item KNOWN PROBLEMS - -=item EXAMPLES +=item ENVIRONMENT =over -=item No Parameters, Nothing returned +=item C -=item Passing Parameters +=item C -=item Returning a Scalar +=item C -=item Returning a list of values +=item C -=item Returning a list in a scalar context +=item C -=item Returning Data from Perl via the parameter list +=item C or C -=item Using G_EVAL +=back -=item Using G_KEEPERR +=item Evolution -=item Using call_sv +=over -=item Using call_argv +=item Priorities -=item Using call_method +=item DLL name mangling -=item Using GIMME_V +=item Threading -=item Using Perl to dispose of temporaries +=item Calls to external programs -=item Strategies for storing Callback Context Information +=item Memory allocation -1. Ignore the problem - Allow only 1 callback, 2. Create a sequence of -callbacks - hard wired limit, 3. Use a parameter to map to the Perl -callback +=item Threads -=item Alternate Stack Manipulation +C, F -=item Creating and calling an anonymous subroutine in C +=back =back -=item SEE ALSO +=over =item AUTHOR -=item DATE +=item SEE ALSO =back -=head2 perlcompile - Introduction to the Perl Compiler-Translator +=head2 perlos390, README.os390 - building and installing Perl for OS/390. =over +=item SYNOPSIS + =item DESCRIPTION =over -=item Layout +=item Unpacking -B::Bytecode, B::C, B::CC, B::Lint, B::Deparse, B::Xref +=item Setup and utilities -=back +=item Configure -=item Using The Back Ends +=item Build, test, install -=over +=item Usage Hints -=item The Cross Referencing Back End +=item Extensions -i, &, s, r +=back -=item The Decompiling Back End +=item AUTHORS -=item The Lint Back End +=item SEE ALSO -=item The Simple C Back End +=over -=item The Bytecode Back End +=item Mailing list -=item The Optimized C Back End +=back -B, O, B::Asmdata, B::Assembler, B::Bblock, B::Bytecode, B::C, B::CC, -B::Debug, B::Deparse, B::Disassembler, B::Lint, B::Showlex, B::Stackobj, -B::Stash, B::Terse, B::Xref +=item HISTORY =back -=item KNOWN PROBLEMS +=head2 perlvms - VMS-specific documentation for Perl -=item AUTHOR +=over -=back +=item DESCRIPTION -=head2 perlapi - autogenerated documentation for the perl public API +=item Installation + +=item Organization of Perl Images =over -=item DESCRIPTION +=item Core Images -AvFILL, av_clear, av_extend, av_fetch, av_len, av_make, av_pop, av_push, -av_shift, av_store, av_undef, av_unshift, call_argv, call_method, call_pv, -call_sv, CLASS, Copy, croak, CvSTASH, dMARK, dORIGMARK, dSP, dXSARGS, -dXSI32, ENTER, eval_pv, eval_sv, EXTEND, fbm_compile, fbm_instr, FREETMPS, -get_av, get_cv, get_hv, get_sv, GIMME, GIMME_V, GvSV, gv_fetchmeth, -gv_fetchmethod, gv_fetchmethod_autoload, gv_stashpv, gv_stashsv, G_ARRAY, -G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR, G_VOID, HEf_SVKEY, HeHASH, HeKEY, -HeKLEN, HePV, HeSVKEY, HeSVKEY_force, HeSVKEY_set, HeVAL, HvNAME, hv_clear, -hv_delete, hv_delete_ent, hv_exists, hv_exists_ent, hv_fetch, hv_fetch_ent, -hv_iterinit, hv_iterkey, hv_iterkeysv, hv_iternext, hv_iternextsv, -hv_iterval, hv_magic, hv_store, hv_store_ent, hv_undef, isALNUM, isALPHA, -isDIGIT, isLOWER, isSPACE, isUPPER, items, ix, LEAVE, looks_like_number, -MARK, mg_clear, mg_copy, mg_find, mg_free, mg_get, mg_length, mg_magical, -mg_set, Move, New, newAV, Newc, newCONSTSUB, newHV, newRV_inc, newRV_noinc, -NEWSV, newSViv, newSVnv, newSVpv, newSVpvf, newSVpvn, newSVrv, newSVsv, -newSVuv, newXS, newXSproto, Newz, Nullav, Nullch, Nullcv, Nullhv, Nullsv, -ORIGMARK, perl_alloc, perl_construct, perl_destruct, perl_free, perl_parse, -perl_run, PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn, PL_modglobal, -PL_na, PL_sv_no, PL_sv_undef, PL_sv_yes, POPi, POPl, POPn, POPp, POPs, -PUSHi, PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, Renew, Renewc, -require_pv, RETVAL, Safefree, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, -strEQ, strGE, strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy, -SvCUR, SvCUR_set, SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_off, -SvIOK_on, SvIOK_only, SvIV, SvIVX, SvLEN, SvLOCK, SvNIOK, SvNIOKp, -SvNIOK_off, SvNOK, SvNOKp, SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, -SvOK, SvOOK, SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX, -SvPV_force, SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, -SvROK_off, SvROK_on, SvRV, SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH, -SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype, -SVt_IV, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUNLOCK, -SvUPGRADE, SvUV, SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf, -sv_catpvf_mg, sv_catpvn, sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg, -sv_chop, sv_cmp, sv_dec, sv_derived_from, sv_eq, sv_grow, sv_inc, -sv_insert, sv_isa, sv_isobject, sv_len, sv_magic, sv_mortalcopy, -sv_newmortal, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv, -sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn, -sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv, -sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, sv_setuv_mg, sv_unref, -sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, sv_vsetpvfn, THIS, -toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS, -XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, -XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, -XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, Zero +=item Perl Extensions -=item AUTHORS +=item Installing static extensions -=item SEE ALSO +=item Installing dynamic extensions =back -=head2 perlintern - autogenerated documentation of purely B - Perl functions +=item File specifications =over -=item DESCRIPTION - -is_gv_magical +=item Syntax -=item AUTHORS +=item Wildcard expansion -=item SEE ALSO +=item Pipes =back -=head2 perlhist - the Perl history records +=item PERL5LIB and PERLLIB + +=item Command line =over -=item DESCRIPTION +=item I/O redirection and backgrounding -=item INTRODUCTION +=item Command line switches -=item THE KEEPERS OF THE PUMPKIN +-i, -S, -u + +=back + +=item Perl functions + +File tests, backticks, binmode FILEHANDLE, crypt PLAINTEXT, USER, dump, +exec LIST, fork, getpwent, getpwnam, getpwuid, gmtime, kill, qx//, select +(system call), stat EXPR, system LIST, time, times, unlink LIST, utime +LIST, waitpid PID,FLAGS + +=item Perl variables + +%ENV, CRTL_ENV, CLISYM_[LOCAL], Any other string, $!, $^E, $?, $^S, $| + +=item Standard modules with VMS-specific differences =over -=item PUMPKIN? +=item SDBM_File =back -=item THE RECORDS +=item Revision date + +=item AUTHOR + +=back + +=head2 perlwin32 - Perl under Win32 =over -=item SELECTED RELEASE SIZES +=item SYNOPSIS -=item SELECTED PATCH SIZES +=item DESCRIPTION + +=over + +=item Setting Up + +Make, Command Shell, Borland C++, Microsoft Visual C++, Mingw32 with GCC + +=item Building + +=item Testing + +=item Installation + +=item Usage Hints + +Environment Variables, File Globbing, Using perl from the command line, +Building Extensions, Command-line Wildcard Expansion, Win32 Specific +Extensions, Running Perl Scripts, Miscellaneous Things =back -=item THE KEEPERS OF THE RECORDS +=item BUGS AND CAVEATS + +=item AUTHORS + +=item SEE ALSO + +=item HISTORY =back @@ -3975,6 +6257,18 @@ FETCH_I_ATTRIBUTES, MODIFY_I_ATTRIBUTES =back +=head2 attrs - set/get attributes of a subroutine (deprecated) + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +method, locked + +=back + =head2 autouse - postpone load of modules until a function is used =over @@ -4194,6 +6488,18 @@ operations =back +=head2 ops - Perl pragma to restrict unsafe operations when compiling + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item SEE ALSO + +=back + =head2 overload - Package for overloading perl operations =over @@ -4280,29 +6586,13 @@ integer, float, binary, q, qr =item I symbolic calculator -=back - -=item AUTHOR - -=item DIAGNOSTICS - -=item BUGS - -=back - -=head2 pwent - Perl pragma to control the pwent functions - -=over - -=item SYNOPSIS - -=item DESCRIPTION +=back -=over +=item AUTHOR -=item subpragma shadow_password +=item DIAGNOSTICS -=back +=item BUGS =back @@ -4403,6 +6693,8 @@ warnings::warn([$category,] $message) =back +=head2 warnings::register - warnings import function + =head1 MODULE DOCUMENTATION =head2 AnyDBM_File - provide framework for multiple DBMs @@ -4842,6 +7134,8 @@ B<-u Package> =back +=head2 B::Stash - show what stashes are loaded + =head2 B::Terse - Walk Perl syntax tree, printing terse info about ops =over @@ -5386,6 +7680,8 @@ B, B, B, B, B =back +=head2 CGI::Util - various utilities + =head2 CPAN - query, download and build perl modules from CPAN sites =over @@ -6216,6 +8512,22 @@ arrays =back +=head2 Errno - System errno constants + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CAVEATS + +=item AUTHOR + +=item COPYRIGHT + +=back + =head2 Exporter - Implements default import method for modules =over @@ -6232,6 +8544,8 @@ arrays =item Specialised Import Lists +=item Constants can be inlined + =item Exporting without using Export's import method =item Module Version Checking @@ -7328,10 +9642,6 @@ splitdir catpath -abs2rel - -rel2abs - =over =item SEE ALSO @@ -7412,15 +9722,243 @@ TopSystemUID =item WARNING -=item HISTORY +=item HISTORY + +=item SEE ALSO + +=item AUTHOR + +=back + +=head2 File::stat - by-name interface to Perl's built-in stat() functions + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item NOTE + +=item AUTHOR + +=back + +=head2 FileCache - keep more files open than the system permits + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item BUGS + +=back + +=head2 FileHandle - supply object methods for filehandles + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +$fh->print, $fh->printf, $fh->getline, $fh->getlines + +=item SEE ALSO + +=back + +=head2 FindBin - Locate directory of original perl script + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item EXPORTABLE VARIABLES + +=item KNOWN BUGS + +=item AUTHORS + +=item COPYRIGHT + +=back + +=head2 GDBM_File - Perl5 access to the gdbm library. + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item AVAILABILITY + +=item BUGS + +=item SEE ALSO + +=back + +=head2 Getopt::Long - Extended processing of command line options + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item Command Line Options, an Introduction + +=item Getting Started with Getopt::Long + +=over + +=item Simple options + +=item A little bit less simple options + +=item Mixing command line option with other arguments + +=item Options with values + +=item Options with multiple values + +=item Options with hash values + +=item User-defined subroutines to handle options + +=item Options with multiple names + +=item Case and abbreviations + +=item Summary of Option Specifications + +!, +, s, i, f, : I [ I ] + +=back + +=item Advanced Possibilities + +=over + +=item Documentation and help texts + +=item Storing options in a hash + +=item Bundling + +=item The lonesome dash + +=item Argument call-back + +=back + +=item Configuring Getopt::Long + +default, auto_abbrev, getopt_compat, require_order, permute, bundling +(default: reset), bundling_override (default: reset), ignore_case +(default: set), ignore_case_always (default: reset), pass_through (default: +reset), prefix, prefix_pattern, debug (default: reset) + +=item Return values and Errors + +=item Legacy + +=over + +=item Default destinations + +=item Alternative option starters + +=item Configuration variables + +=back + +=item AUTHOR + +=item COPYRIGHT AND DISCLAIMER + +=back + +=head2 Getopt::Std, getopt - Process single-character switches with switch +clustering + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=back + +=head2 I18N::Collate - compare 8-bit scalar data according to the current +locale + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=back + +=head2 IO - load various IO modules + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=back + +=head2 IO::Dir - supply object methods for directory handles + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +new ( [ DIRNAME ] ), open ( DIRNAME ), read (), seek ( POS ), tell (), +rewind (), close (), tie %hash, IO::Dir, DIRNAME [, OPTIONS ] + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::File - supply object methods for filehandles + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile + +=item METHODS + +open( FILENAME [,MODE [,PERMS]] ) =item SEE ALSO -=item AUTHOR +=item HISTORY =back -=head2 File::stat - by-name interface to Perl's built-in stat() functions +=head2 IO::Handle - supply object methods for I/O handles =over @@ -7428,25 +9966,28 @@ TopSystemUID =item DESCRIPTION -=item NOTE - -=item AUTHOR +=item CONSTRUCTOR -=back +new (), new_from_fd ( FD, MODE ) -=head2 FileCache - keep more files open than the system permits +=item METHODS -=over +$io->fdopen ( FD, MODE ), $io->opened, $io->getline, $io->getlines, +$io->ungetc ( ORD ), $io->write ( BUF, LEN [, OFFSET ] ), $io->error, +$io->clearerr, $io->sync, $io->flush, $io->printflush ( ARGS ), +$io->blocking ( [ BOOL ] ), $io->untaint -=item SYNOPSIS +=item NOTE -=item DESCRIPTION +=item SEE ALSO =item BUGS +=item HISTORY + =back -=head2 FileHandle - supply object methods for filehandles +=head2 IO::Pipe - supply object methods for pipes =over @@ -7454,13 +9995,23 @@ TopSystemUID =item DESCRIPTION -$fh->print, $fh->printf, $fh->getline, $fh->getlines +=item CONSTRUCTOR + +new ( [READER, WRITER] ) + +=item METHODS + +reader ([ARGS]), writer ([ARGS]), handles () =item SEE ALSO +=item AUTHOR + +=item COPYRIGHT + =back -=head2 FindBin - Locate directory of original perl script +=head2 IO::Poll - Object interface to system poll call =over @@ -7468,17 +10019,20 @@ $fh->print, $fh->printf, $fh->getline, $fh->getlines =item DESCRIPTION -=item EXPORTABLE VARIABLES +=item METHODS -=item KNOWN BUGS +mask ( IO [, EVENT_MASK ] ), poll ( [ TIMEOUT ] ), events ( IO ), remove ( +IO ), handles( [ EVENT_MASK ] ) -=item AUTHORS +=item SEE ALSO + +=item AUTHOR =item COPYRIGHT =back -=head2 GDBM_File - Perl5 access to the gdbm library. +=head2 IO::Seekable - supply seek based methods for I/O objects =over @@ -7486,15 +10040,13 @@ $fh->print, $fh->printf, $fh->getline, $fh->getlines =item DESCRIPTION -=item AVAILABILITY - -=item BUGS - =item SEE ALSO +=item HISTORY + =back -=head2 Getopt::Long - Extended processing of command line options +=head2 IO::Select - OO interface to the select system call =over @@ -7502,81 +10054,79 @@ $fh->print, $fh->printf, $fh->getline, $fh->getlines =item DESCRIPTION -=item Command Line Options, an Introduction - -=item Getting Started with Getopt::Long +=item CONSTRUCTOR -=over +new ( [ HANDLES ] ) -=item Simple options +=item METHODS -=item A little bit less simple options +add ( HANDLES ), remove ( HANDLES ), exists ( HANDLE ), handles, can_read ( +[ TIMEOUT ] ), can_write ( [ TIMEOUT ] ), has_exception ( [ TIMEOUT ] ), +count (), bits(), select ( READ, WRITE, ERROR [, TIMEOUT ] ) -=item Mixing command line option with other arguments +=item EXAMPLE -=item Options with values +=item AUTHOR -=item Options with multiple values +=item COPYRIGHT -=item Options with hash values +=back -=item User-defined subroutines to handle options +=head2 IO::Socket - Object interface to socket communications -=item Options with multiple names +=over -=item Case and abbreviations +=item SYNOPSIS -=item Summary of Option Specifications +=item DESCRIPTION -!, +, s, i, f, : I [ I ] +=item CONSTRUCTOR -=back +new ( [ARGS] ) -=item Advanced Possibilities +=item METHODS -=over +accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), timeout([VAL]), +sockopt(OPT [, VAL]), sockdomain, socktype, protocol, connected -=item Documentation and help texts +=item SEE ALSO -=item Storing options in a hash +=item AUTHOR -=item Bundling +=item COPYRIGHT -=item The lonesome dash +=back -=item Argument call-back +=head2 IO::Socket::INET - Object interface for AF_INET domain sockets -=back +=over -=item Configuring Getopt::Long +=item SYNOPSIS -default, auto_abbrev, getopt_compat, require_order, permute, bundling -(default: reset), bundling_override (default: reset), ignore_case -(default: set), ignore_case_always (default: reset), pass_through (default: -reset), prefix, prefix_pattern, debug (default: reset) +=item DESCRIPTION -=item Return values and Errors +=item CONSTRUCTOR -=item Legacy +new ( [ARGS] ) =over -=item Default destinations - -=item Alternative option starters +=item METHODS -=item Configuration variables +sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost +() =back +=item SEE ALSO + =item AUTHOR -=item COPYRIGHT AND DISCLAIMER +=item COPYRIGHT =back -=head2 Getopt::Std, getopt - Process single-character switches with switch -clustering +=head2 IO::Socket::UNIX - Object interface for AF_UNIX domain sockets =over @@ -7584,26 +10134,19 @@ clustering =item DESCRIPTION -=back - -=head2 I18N::Collate - compare 8-bit scalar data according to the current -locale - -=over - -=item SYNOPSIS +=item CONSTRUCTOR -=item DESCRIPTION +new ( [ARGS] ) -=back +=item METHODS -=head2 IO - load various IO modules +hostpath(), peerpath() -=over +=item SEE ALSO -=item SYNOPSIS +=item AUTHOR -=item DESCRIPTION +=item COPYRIGHT =back @@ -7847,6 +10390,28 @@ hostpath(), peerpath() =back +=head2 IPC::Msg - SysV Msg IPC object class + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item METHODS + +new ( KEY , FLAGS ), id, rcv ( BUF, LEN [, TYPE [, FLAGS ]] ), remove, set +( STAT ), set ( NAME => VALUE [, NAME => VALUE ...] ), snd ( TYPE, MSG [, +FLAGS ] ), stat + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + =head2 IPC::Open2, open2 - open a process for both reading and writing =over @@ -7874,6 +10439,29 @@ handling =back +=head2 IPC::Semaphore - SysV Semaphore IPC object class + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item METHODS + +new ( KEY , NSEMS , FLAGS ), getall, getncnt ( SEM ), getpid ( SEM ), +getval ( SEM ), getzcnt ( SEM ), id, op ( OPLIST ), remove, set ( STAT ), +set ( NAME => VALUE [, NAME => VALUE ...] ), setall ( VALUES ), setval ( N +, VALUE ), stat + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + =head2 IPC::SysV - SysV IPC constants =over @@ -8304,12 +10892,12 @@ rewinddir, rmdir, scanf, setgid, setjmp, setlocale, setpgid, setsid, setuid, sigaction, siglongjmp, sigpending, sigprocmask, sigsetjmp, sigsuspend, sin, sinh, sleep, sprintf, sqrt, srand, sscanf, stat, strcat, strchr, strcmp, strcoll, strcpy, strcspn, strerror, strftime, strlen, -strncat, strncmp, strncpy, stroul, strpbrk, strrchr, strspn, strstr, -strtod, strtok, strtol, strtoul, strxfrm, sysconf, system, tan, tanh, -tcdrain, tcflow, tcflush, tcgetpgrp, tcsendbreak, tcsetpgrp, time, times, -tmpfile, tmpnam, tolower, toupper, ttyname, tzname, tzset, umask, uname, -ungetc, unlink, utime, vfprintf, vprintf, vsprintf, wait, waitpid, -wcstombs, wctomb, write +strncat, strncmp, strncpy, strpbrk, strrchr, strspn, strstr, strtod, +strtok, strtol, strtoul, strxfrm, sysconf, system, tan, tanh, tcdrain, +tcflow, tcflush, tcgetpgrp, tcsendbreak, tcsetpgrp, time, times, tmpfile, +tmpnam, tolower, toupper, ttyname, tzname, tzset, umask, uname, ungetc, +unlink, utime, vfprintf, vprintf, vsprintf, wait, waitpid, wcstombs, +wctomb, write =item CLASSES @@ -8397,8 +10985,6 @@ Constants Constants, Macros -=item CREATION - =back =head2 Pod::Checker, podchecker() - check pod documents for syntax errors @@ -9456,6 +12042,39 @@ C<-pathlist> =back +=head2 Safe - Compile and execute code in restricted compartments + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +a new namespace, an operator mask + +=item WARNING + +=over + +=item RECENT CHANGES + +=item Methods in class Safe + +permit (OP, ...), permit_only (OP, ...), deny (OP, ...), deny_only (OP, +...), trap (OP, ...), untrap (OP, ...), share (NAME, ...), share_from +(PACKAGE, ARRAYREF), varglob (VARNAME), reval (STRING), rdo (FILENAME), +root (NAMESPACE), mask (MASK) + +=item Some Safety Issues + +Memory, CPU, Snooping, Signals, State Changes + +=item AUTHOR + +=back + +=back + =head2 Search::Dict, look - search for key in dictionary file =over @@ -9555,6 +12174,27 @@ pack_sockaddr_un PATH, unpack_sockaddr_un SOCKADDR_UN =back +=head2 Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl +interface to the UNIX syslog(3) calls + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +openlog $ident, $logopt, $facility, syslog $priority, $format, @args, +setlogmask $mask_priority, setlogsock $sock_type (added in 5.004_02), +closelog + +=item EXAMPLES + +=item SEE ALSO + +=item AUTHOR + +=back + =head2 Syslog::Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX syslog(3) calls @@ -10069,6 +12709,38 @@ March 18th, 2000 =back +=head2 Win32 - Interfaces to some Win32 API Functions + +=over + +=item DESCRIPTION + +=over + +=item Alphabetical Listing of Win32 Functions + +Win32::AbortSystemShutdown(MACHINE), Win32::BuildNumber(), +Win32::CopyFile(FROM, TO, OVERWRITE), Win32::DomainName(), +Win32::ExpandEnvironmentStrings(STRING), Win32::FormatMessage(ERRORCODE), +Win32::FsType(), Win32::FreeLibrary(HANDLE), Win32::GetArchName(), +Win32::GetChipName(), Win32::GetCwd(), Win32::GetFullPathName(FILENAME), +Win32::GetLastError(), Win32::GetLongPathName(PATHNAME), +Win32::GetNextAvailDrive(), Win32::GetOSVersion(), +Win32::GetShortPathName(PATHNAME), Win32::GetProcAddress(INSTANCE, +PROCNAME), Win32::GetTickCount(), Win32::InitiateSystemShutdown(MACHINE, +MESSAGE, TIMEOUT, FORCECLOSE, REBOOT), Win32::IsWinNT(), Win32::IsWin95(), +Win32::LoadLibrary(LIBNAME), Win32::LoginName(), +Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE), +Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE), +Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]]), Win32::NodeName(), +Win32::RegisterServer(LIBRARYNAME), Win32::SetCwd(NEWDIRECTORY), +Win32::SetLastError(ERROR), Win32::Sleep(TIME), Win32::Spawn(COMMAND, ARGS, +PID), Win32::UnregisterServer(LIBRARYNAME) + +=back + +=back + =head2 XSLoader - Dynamically load C libraries into Perl code =over diff --git a/pp.c b/pp.c index efea0c1..1649cf4 100644 --- a/pp.c +++ b/pp.c @@ -5263,7 +5263,7 @@ PP(pp_lock) dTOPss; SV *retsv = sv; #ifdef USE_THREADS - Perl_lock(aTHX_ sv); + sv_lock(sv); #endif /* USE_THREADS */ if (SvTYPE(retsv) == SVt_PVAV || SvTYPE(retsv) == SVt_PVHV || SvTYPE(retsv) == SVt_PVCV) { diff --git a/pp_ctl.c b/pp_ctl.c index 9400760..a924d2e 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -892,8 +892,8 @@ PP(pp_sort) PL_sortstash = stash; } #ifdef USE_THREADS - Perl_lock(aTHX_ (SV *)PL_firstgv); - Perl_lock(aTHX_ (SV *)PL_secondgv); + sv_lock((SV *)PL_firstgv); + sv_lock((SV *)PL_secondgv); #endif SAVESPTR(GvSV(PL_firstgv)); SAVESPTR(GvSV(PL_secondgv)); diff --git a/proto.h b/proto.h index e7a21c3..bd222fe 100644 --- a/proto.h +++ b/proto.h @@ -865,6 +865,9 @@ PERL_CALLCONV struct perl_vars * Perl_GetVars(pTHX); #endif PERL_CALLCONV int Perl_runops_standard(pTHX); PERL_CALLCONV int Perl_runops_debug(pTHX); +#if defined(USE_THREADS) +PERL_CALLCONV SV* Perl_sv_lock(pTHX_ SV *sv); +#endif PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...) #ifdef CHECK_FORMAT __attribute__((format(printf,pTHX_2,pTHX_3))) @@ -1267,8 +1270,6 @@ STATIC void S_xstat(pTHX_ int); # endif #endif -PERL_CALLCONV SV* Perl_lock(pTHX_ SV *sv) __attribute__((noreturn)); - #if defined(PERL_OBJECT) }; #endif diff --git a/sv.h b/sv.h index 0e12554..b77a9d3 100644 --- a/sv.h +++ b/sv.h @@ -363,7 +363,19 @@ struct xpvio { PerlIO * xio_ifp; /* ifp and ofp are normally the same */ PerlIO * xio_ofp; /* but sockets need separate streams */ - DIR * xio_dirp; /* for opendir, readdir, etc */ + /* Cray addresses everything by word boundaries (64 bits) and + * code and data pointers cannot be mixed (which is exactly what + * Perl_filter_add() tries to do with the dirp), hence the following + * union trick (as suggested by Gurusamy Sarathy). + * For further information see Geir Johansen's problem report titled + [ID 20000612.002] Perl problem on Cray system + * The any pointer (known as IoANY()) will also be a good place + * to hang any IO disciplines to. + */ + union { + DIR * xiou_dirp; /* for opendir, readdir, etc */ + void * xiou_any; /* for alignment */ + } xio_dirpu; long xio_lines; /* $. */ long xio_page; /* $% */ long xio_page_len; /* $= */ @@ -378,6 +390,8 @@ struct xpvio { char xio_type; char xio_flags; }; +#define xio_dirp xio_dirpu.xiou_dirp +#define xio_any xio_dirpu.xiou_any #define IOf_ARGV 1 /* this fp iterates over ARGV */ #define IOf_START 2 /* check for null ARGV and substitute '-' */ @@ -704,6 +718,7 @@ Set the length of the string which is in the SV. See C. #define IoIFP(sv) ((XPVIO*) SvANY(sv))->xio_ifp #define IoOFP(sv) ((XPVIO*) SvANY(sv))->xio_ofp #define IoDIRP(sv) ((XPVIO*) SvANY(sv))->xio_dirp +#define IoANY(sv) ((XPVIO*) SvANY(sv))->xio_any #define IoLINES(sv) ((XPVIO*) SvANY(sv))->xio_lines #define IoPAGE(sv) ((XPVIO*) SvANY(sv))->xio_page #define IoPAGE_LEN(sv) ((XPVIO*) SvANY(sv))->xio_page_len diff --git a/t/op/method.t b/t/op/method.t index d2f1300..6e25310 100755 --- a/t/op/method.t +++ b/t/op/method.t @@ -4,6 +4,11 @@ # test method calls and autoloading. # +BEGIN { + chdir 't' if -d 't'; + unshift @INC, '../lib' if -d '../lib'; +} + print "1..53\n"; @A::ISA = 'B'; diff --git a/thread.h b/thread.h index 0ea9e74..8234360 100644 --- a/thread.h +++ b/thread.h @@ -280,7 +280,8 @@ # define UNLOCK_STRTAB_MUTEX MUTEX_UNLOCK(&PL_strtab_mutex) # define LOCK_CRED_MUTEX MUTEX_LOCK(&PL_cred_mutex) # define UNLOCK_CRED_MUTEX MUTEX_UNLOCK(&PL_cred_mutex) - +# define LOCK_FDPID_MUTEX MUTEX_LOCK(&PL_fdpid_mutex) +# define UNLOCK_FDPID_MUTEX MUTEX_UNLOCK(&PL_fdpid_mutex) /* Values and macros for thr->flags */ #define THRf_STATE_MASK 7 @@ -376,6 +377,14 @@ typedef struct condpair { # define UNLOCK_CRED_MUTEX #endif +#ifndef LOCK_FDPID_MUTEX +# define LOCK_FDPID_MUTEX +#endif + +#ifndef UNLOCK_FDPID_MUTEX +# define UNLOCK_FDPID_MUTEX +#endif + /* THR, SET_THR, and dTHR are there for compatibility with old versions */ #ifndef THR # define THR PERL_GET_THX diff --git a/toke.c b/toke.c index f601cf1..fc9d681 100644 --- a/toke.c +++ b/toke.c @@ -1875,7 +1875,7 @@ S_incl_perldb(pTHX) * store private buffers and state information. * * The supplied datasv parameter is upgraded to a PVIO type - * and the IoDIRP field is used to store the function pointer, + * and the IoDIRP/IoANY field is used to store the function pointer, * and IOf_FAKE_DIRP is enabled on datasv to mark this as such. * Note that IoTOP_NAME, IoFMT_NAME, IoBOTTOM_NAME, if set for * private use must be set using malloc'd pointers. @@ -1893,7 +1893,7 @@ Perl_filter_add(pTHX_ filter_t funcp, SV *datasv) datasv = NEWSV(255,0); if (!SvUPGRADE(datasv, SVt_PVIO)) Perl_die(aTHX_ "Can't upgrade filter_add data to SVt_PVIO"); - IoDIRP(datasv) = (DIR*)funcp; /* stash funcp into spare field */ + IoANY(datasv) = (void *)funcp; /* stash funcp into spare field */ IoFLAGS(datasv) |= IOf_FAKE_DIRP; DEBUG_P(PerlIO_printf(Perl_debug_log, "filter_add func %p (%s)\n", funcp, SvPV_nolen(datasv))); @@ -1913,9 +1913,9 @@ Perl_filter_del(pTHX_ filter_t funcp) return; /* if filter is on top of stack (usual case) just pop it off */ datasv = FILTER_DATA(AvFILLp(PL_rsfp_filters)); - if (IoDIRP(datasv) == (DIR*)funcp) { + if (IoANY(datasv) == (void *)funcp) { IoFLAGS(datasv) &= ~IOf_FAKE_DIRP; - IoDIRP(datasv) = (DIR*)NULL; + IoANY(datasv) = (void *)NULL; sv_free(av_pop(PL_rsfp_filters)); return; @@ -1975,7 +1975,7 @@ Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen) return FILTER_READ(idx+1, buf_sv, maxlen); /* recurse */ } /* Get function pointer hidden within datasv */ - funcp = (filter_t)IoDIRP(datasv); + funcp = (filter_t)IoANY(datasv); DEBUG_P(PerlIO_printf(Perl_debug_log, "filter_read %d: via function %p (%s)\n", idx, funcp, SvPV_nolen(datasv))); @@ -7391,27 +7391,6 @@ Perl_yyerror(pTHX_ char *s) } -#ifdef PERL_OBJECT -#include "XSUB.h" -#endif - -/* - * restore_rsfp - * Restore a source filter. - */ - -static void -restore_rsfp(pTHXo_ void *f) -{ - PerlIO *fp = (PerlIO*)f; - - if (PL_rsfp == PerlIO_stdin()) - PerlIO_clearerr(PL_rsfp); - else if (PL_rsfp && (PL_rsfp != fp)) - PerlIO_close(PL_rsfp); - PL_rsfp = fp; -} - STATIC char* S_swallow_bom(pTHX_ char *s) { STRLEN slen; @@ -7463,3 +7442,24 @@ S_swallow_bom(pTHX_ char *s) { } return s; } + +#ifdef PERL_OBJECT +#include "XSUB.h" +#endif + +/* + * restore_rsfp + * Restore a source filter. + */ + +static void +restore_rsfp(pTHXo_ void *f) +{ + PerlIO *fp = (PerlIO*)f; + + if (PL_rsfp == PerlIO_stdin()) + PerlIO_clearerr(PL_rsfp); + else if (PL_rsfp && (PL_rsfp != fp)) + PerlIO_close(PL_rsfp); + PL_rsfp = fp; +} diff --git a/util.c b/util.c index e0f1f14..d892e75 100644 --- a/util.c +++ b/util.c @@ -2402,9 +2402,9 @@ Perl_my_popen(pTHX_ char *cmd, char *mode) PerlLIO_close(p[This]); p[This] = p[that]; } - MUTEX_LOCK(&PL_fdpid_mutex); + LOCK_FDPID_MUTEX; sv = *av_fetch(PL_fdpid,p[This],TRUE); - MUTEX_UNLOCK(&PL_fdpid_mutex); + UNLOCK_FDPID_MUTEX; (void)SvUPGRADE(sv,SVt_IV); SvIVX(sv) = pid; PL_forkprocess = pid; @@ -2622,9 +2622,9 @@ Perl_my_pclose(pTHX_ PerlIO *ptr) int saved_win32_errno; #endif - MUTEX_LOCK(&PL_fdpid_mutex); + LOCK_FDPID_MUTEX; svp = av_fetch(PL_fdpid,PerlIO_fileno(ptr),TRUE); - MUTEX_UNLOCK(&PL_fdpid_mutex); + UNLOCK_FDPID_MUTEX; pid = SvIVX(*svp); SvREFCNT_dec(*svp); *svp = &PL_sv_undef; @@ -3497,7 +3497,7 @@ Perl_condpair_magic(pTHX_ SV *sv) } SV * -Perl_lock(pTHX_ SV *osv) +Perl_sv_lock(pTHX_ SV *osv) { MAGIC *mg; SV *sv = osv; @@ -3513,17 +3513,18 @@ Perl_lock(pTHX_ SV *osv) MUTEX_LOCK(MgMUTEXP(mg)); if (MgOWNER(mg) == thr) MUTEX_UNLOCK(MgMUTEXP(mg)); - else { + else { while (MgOWNER(mg)) COND_WAIT(MgOWNERCONDP(mg), MgMUTEXP(mg)); MgOWNER(mg) = thr; - DEBUG_S(PerlIO_printf(Perl_debug_log, "0x%"UVxf": Perl_lock lock 0x%"UVxf"\n", + DEBUG_S(PerlIO_printf(Perl_debug_log, + "0x%"UVxf": Perl_lock lock 0x%"UVxf"\n", PTR2UV(thr), PTR2UV(sv));) MUTEX_UNLOCK(MgMUTEXP(mg)); SAVEDESTRUCTOR_X(Perl_unlock_condpair, sv); } - SvUNLOCK(sv); - return sv; + SvUNLOCK(sv); + return sv; } /* diff --git a/win32/Makefile b/win32/Makefile index d669516..f5ee4c6 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -972,6 +972,8 @@ utils: $(PERLEXE) $(X2P) copy ..\vms\perlvms.pod .\perlvms.pod copy ..\README.win32 .\perlwin32.pod $(MAKE) -f ..\win32\pod.mak converters + cd ..\lib + $(PERLEXE) lib.pm.PL cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) diff --git a/win32/win32.c b/win32/win32.c index 6e33616..60777fa 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2393,9 +2393,9 @@ win32_popen(const char *command, const char *mode) /* close saved handle */ win32_close(oldfd); - MUTEX_LOCK(&PL_fdpid_mutex); + LOCK_FDPID_MUTEX; sv_setiv(*av_fetch(w32_fdpid, p[parent], TRUE), childpid); - MUTEX_UNLOCK(&PL_fdpid_mutex); + UNLOCK_FDPID_MUTEX; /* set process id so that it can be returned by perl's open() */ PL_forkprocess = childpid; @@ -2431,9 +2431,9 @@ win32_pclose(FILE *pf) int childpid, status; SV *sv; - MUTEX_LOCK(&PL_fdpid_mutex); + LOCK_FDPID_MUTEX; sv = *av_fetch(w32_fdpid, win32_fileno(pf), TRUE); - MUTEX_UNLOCK(&PL_fdpid_mutex); + if (SvIOK(sv)) childpid = SvIVX(sv); else @@ -2446,6 +2446,7 @@ win32_pclose(FILE *pf) win32_fclose(pf); SvIVX(sv) = 0; + UNLOCK_FDPID_MUTEX; if (win32_waitpid(childpid, &status, 0) == -1) return -1; -- 2.7.4