diff options
-rw-r--r-- | MANIFEST | 10 | ||||
-rw-r--r-- | Makefile.SH | 21 | ||||
-rw-r--r-- | doio.c | 4 | ||||
-rw-r--r-- | doop.c | 6 | ||||
-rw-r--r-- | embed.h | 14 | ||||
-rwxr-xr-x | embed.pl | 5 | ||||
-rw-r--r-- | ext/B/B/Stash.pm | 8 | ||||
-rw-r--r-- | ext/POSIX/POSIX.pod | 608 | ||||
-rw-r--r-- | global.sym | 2 | ||||
-rw-r--r-- | gv.c | 4 | ||||
-rw-r--r-- | lib/CGI/Util.pm | 8 | ||||
-rw-r--r-- | lib/Win32.pod (renamed from pod/Win32.pod) | 0 | ||||
-rw-r--r-- | lib/lib_pm.PL (renamed from lib/lib.pm.PL) | 1 | ||||
-rw-r--r-- | lib/warnings/register.pm | 8 | ||||
-rw-r--r-- | makedef.pl | 2 | ||||
-rw-r--r-- | objXSUB.h | 10 | ||||
-rw-r--r-- | perlapi.c | 9 | ||||
-rw-r--r-- | pod/Makefile | 401 | ||||
-rw-r--r-- | pod/Makefile.SH | 158 | ||||
-rw-r--r-- | pod/buildtoc | 259 | ||||
-rw-r--r-- | pod/buildtoc.PL | 467 | ||||
-rw-r--r-- | pod/perl.pod | 74 | ||||
-rw-r--r-- | pod/perlfunc.pod | 30 | ||||
-rw-r--r-- | pod/perltoc.pod | 5678 | ||||
-rw-r--r-- | pp.c | 2 | ||||
-rw-r--r-- | pp_ctl.c | 4 | ||||
-rw-r--r-- | proto.h | 5 | ||||
-rw-r--r-- | sv.h | 17 | ||||
-rwxr-xr-x | t/op/method.t | 5 | ||||
-rw-r--r-- | thread.h | 11 | ||||
-rw-r--r-- | toke.c | 52 | ||||
-rw-r--r-- | util.c | 19 | ||||
-rw-r--r-- | win32/Makefile | 2 | ||||
-rw-r--r-- | win32/win32.c | 9 |
34 files changed, 5447 insertions, 2466 deletions
@@ -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 52789b9241..a80e93b635 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 @@ -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) @@ -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; \ } @@ -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 @@ -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 b9b828f505..f3a8247877 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 186d72eac4..9abad2a86f 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<not> flushed. =item abort -This is identical to the C function C<abort()>. +This is identical to the C function C<abort()>. It terminates the +process with a C<SIGABRT> signal unless caught by a signal handler or +if the handler does not return normally (it e.g. does a C<longjmp>). =item abs -This is identical to Perl's builtin C<abs()> function. +This is identical to Perl's builtin C<abs()> 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<undef> on failure. +Returns C<undef> on failure. Note: do not use C<access()> for +security purposes. Between the C<access()> call and the operation +you are preparing for the permissions might change: a classic +I<race condition>. =item acos -This is identical to the C function C<acos()>. +This is identical to the C function C<acos()>, returning +the arcus cosine of its numerical argument. =item alarm -This is identical to Perl's builtin C<alarm()> function. +This is identical to Perl's builtin C<alarm()> function, +either for arming or disarming the C<SIGARLM> timer. =item asctime -This is identical to the C function C<asctime()>. +This is identical to the C function C<asctime()>. 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<asin()>. +This is identical to the C function C<asin()>, returning +the arcus sine of its numerical argument. =item assert -Unimplemented. +Unimplemented, but you can use L<perlfunc/die> and the L<Carp> module +to achieve similar things. =item atan -This is identical to the C function C<atan()>. +This is identical to the C function C<atan()>, returning the +arcus tangent of its numerical argument. =item atan2 -This is identical to Perl's builtin C<atan2()> function. +This is identical to Perl's builtin C<atan2()> function, returning +the arcus tangent defined by its two numerical arguments, the I<y> +coordinate and the I<x> coordinate. =item atexit -atexit() is C-specific: use END {} instead. +atexit() is C-specific: use C<END {}> instead, see L<perlsub>. =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<perlfunc/int>. =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<perlfunc/int>. =item bsearch -bsearch() not supplied. +bsearch() not supplied. For doing binary search on wordlists, +see L<Search::Dict>. =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<ceil()>. +This is identical to the C function C<ceil()>, returning the smallest +integer value greater than or equal to the given numerical argument. =item chdir -This is identical to Perl's builtin C<chdir()> function. +This is identical to Perl's builtin C<chdir()> function, allowing +one to change the working (default) directory, see L<perlfunc/chdir>. =item chmod -This is identical to Perl's builtin C<chmod()> function. +This is identical to Perl's builtin C<chmod()> function, allowing +one to change file and directory permissions, see L<perlfunc/chmod>. =item chown -This is identical to Perl's builtin C<chown()> function. +This is identical to Perl's builtin C<chown()> function, allowing one +to change file and directory owners and groups, see L<perlfunc/chown>. =item clearerr -Use method C<IO::Handle::clearerr()> instead. +Use the method L<IO::Handle::clearerr()> 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<clock()>. +This is identical to the C function C<clock()>, returning the +amount of spent processor time in microseconds. =item close @@ -171,17 +209,22 @@ C<POSIX::open>. Returns C<undef> on failure. +See also L<perlfunc/close>. + =item closedir -This is identical to Perl's builtin C<closedir()> function. +This is identical to Perl's builtin C<closedir()> function for closing +a directory handle, see L<perlfunc/closedir>. =item cos -This is identical to Perl's builtin C<cos()> function. +This is identical to Perl's builtin C<cos()> function, for returning +the cosine of its numerical argument, see L<perlfunc/cos>. =item cosh -This is identical to the C function C<cosh()>. +This is identical to the C function C<cosh()>, for returning +the hyperbolic cosine of its numeric argument. =item creat @@ -191,6 +234,8 @@ C<POSIX::open>. Use C<POSIX::close> to close the file. $fd = POSIX::creat( "foo", 0611 ); POSIX::close( $fd ); +See also L<perlfunc/sysopen> and its C<O_CREAT> 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<ctime()>. +This is identical to the C function C<ctime()> and equivalent +to C<asctime(localtime(...))>, see L</asctime> and L</localtime>. =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<difftime()>. +This is identical to the C function C<difftime()>, for returning +the time difference (in seconds) between two times (as returned +by C<time()>), see L</time>. =item div -div() is C-specific. +div() is C-specific, use L<perlfunc/int> on the usual C</> division and +the modulus C<%>. =item dup -This is similar to the C function C<dup()>. +This is similar to the C function C<dup()>, for duplicating a file +descriptor. This uses file descriptors such as those obtained by calling C<POSIX::open>. @@ -226,7 +276,8 @@ Returns C<undef> on failure. =item dup2 -This is similar to the C function C<dup2()>. +This is similar to the C function C<dup2()>, for duplicating a file +descriptor to an another known file descriptor. This uses file descriptors such as those obtained by calling C<POSIX::open>. @@ -239,41 +290,47 @@ Returns the value of errno. $errno = POSIX::errno(); +This identical to the numerical values of the C<$!>, see L<perlvar/$ERRNO>. + =item execl -execl() is C-specific. +execl() is C-specific, see L<perlfunc/exec>. =item execle -execle() is C-specific. +execle() is C-specific, see L<perlfunc/exec>. =item execlp -execlp() is C-specific. +execlp() is C-specific, see L<perlfunc/exec>. =item execv -execv() is C-specific. +execv() is C-specific, see L<perlfunc/exec>. =item execve -execve() is C-specific. +execve() is C-specific, see L<perlfunc/exec>. =item execvp -execvp() is C-specific. +execvp() is C-specific, see L<perlfunc/exec>. =item exit -This is identical to Perl's builtin C<exit()> function. +This is identical to Perl's builtin C<exit()> function for exiting the +program, see L<perlfunc/exit>. =item exp -This is identical to Perl's builtin C<exp()> function. +This is identical to Perl's builtin C<exp()> function for +returning the exponent (I<e>-based) of the numerical argument, +see L<perlfunc/exp>. =item fabs -This is identical to Perl's builtin C<abs()> function. +This is identical to Perl's builtin C<abs()> function for returning +the absolute value of the numerical argument, see L<perlfunc/abs>. =item fclose @@ -281,7 +338,8 @@ Use method C<IO::Handle::close()> instead. =item fcntl -This is identical to Perl's builtin C<fcntl()> function. +This is identical to Perl's builtin C<fcntl()> function, +see L<perlfunc/fcntl>. =item fdopen @@ -309,7 +367,8 @@ Use method C<IO::Seekable::getpos()> instead. =item fgets -Use method C<IO::Handle::gets()> instead. +Use method C<IO::Handle::gets()> instead. Similar to E<lt>E<gt>, also known +as L<perlfunc/readline>. =item fileno @@ -317,12 +376,19 @@ Use method C<IO::Handle::fileno()> instead. =item floor -This is identical to the C function C<floor()>. +This is identical to the C function C<floor()>, returning the largest +integer value less than or equal to the numerical argument. =item fmod This is identical to the C function C<fmod()>. + $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<IO::File::open()> instead. @@ -346,37 +412,37 @@ Returns C<undef> on failure. =item fprintf -fprintf() is C-specific--use printf instead. +fprintf() is C-specific, see L<perlfunc/printf> instead. =item fputc -fputc() is C-specific--use print instead. +fputc() is C-specific, see L<perlfunc/print> instead. =item fputs -fputs() is C-specific--use print instead. +fputs() is C-specific, see L<perlfunc/print> instead. =item fread -fread() is C-specific--use read instead. +fread() is C-specific, see L<perlfunc/read> 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<perlfunc/open> 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 E<lt>E<gt> and regular expressions instead. =item fseek @@ -401,170 +467,217 @@ Use method C<IO::Seekable::tell()> instead. =item fwrite -fwrite() is C-specific--use print instead. +fwrite() is C-specific, see L<perlfunc/print> instead. =item getc -This is identical to Perl's builtin C<getc()> function. +This is identical to Perl's builtin C<getc()> function, +see L<perlfunc/getc>. =item getchar -Returns one character from STDIN. +Returns one character from STDIN. Identical to Perl's C<getc()>, +see L<perlfunc/getc>. =item getcwd Returns the name of the current working directory. +See also L<Cwd>. =item getegid -Returns the effective group id. +Returns the effective group identifier. Similar to Perl' s builtin +variable C<$(>, see L<perlvar/$EGID>. =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<gt>> +variable, see L<perlvar/$EUID>. =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<perlvar/$GID>. =item getgrgid -This is identical to Perl's builtin C<getgrgid()> function. +This is identical to Perl's builtin C<getgrgid()> function for +returning group entries by group identifiers, see +L<perlfunc/getgrgid>. =item getgrnam -This is identical to Perl's builtin C<getgrnam()> function. +This is identical to Perl's builtin C<getgrnam()> function for +returning group entries by group names, see L<perlfunc/getgrnam>. =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<perlvar/$GID>. =item getlogin -This is identical to Perl's builtin C<getlogin()> function. +This is identical to Perl's builtin C<getlogin()> function for +returning the user name associated with the current session, see +L<perlfunc/getlogin>. =item getpgrp -This is identical to Perl's builtin C<getpgrp()> function. +This is identical to Perl's builtin C<getpgrp()> function for +returning the prcess group identifier of the current process, see +L<perlfunc/getpgrp>. =item getpid -Returns the process's id. +Returns the process identifier. Identical to Perl's builtin +variable C<$$>, see L<perlvar/$PID>. =item getppid -This is identical to Perl's builtin C<getppid()> function. +This is identical to Perl's builtin C<getppid()> function for +returning the process identifier of the parent process of the current +process , see L<perlfunc/getppid>. =item getpwnam -This is identical to Perl's builtin C<getpwnam()> function. +This is identical to Perl's builtin C<getpwnam()> function for +returning user entries by user names, see L<perlfunc/getpwnam>. =item getpwuid -This is identical to Perl's builtin C<getpwuid()> function. +This is identical to Perl's builtin C<getpwuid()> function for +returning user entries by user identifiers, see L<perlfunc/getpwuid>. =item gets -Returns one line from STDIN. +Returns one line from C<STDIN>, similar to E<lt>E<gt>, also known +as the C<readline()> function, see L<perlfunc/readline>. + +B<NOTE>: if you have C programs that still use C<gets()>, be very +afraid. The C<gets()> function is a source of endless grief because +it has no buffer overrun checks. It should B<never> be used. The +C<fgets()> function should be preferred instead. =item getuid -Returns the user's id. +Returns the user's identifier. Identical to Perl's builtin C<$E<lt>> variable, +see L<perlvar/$UID>. =item gmtime -This is identical to Perl's builtin C<gmtime()> function. +This is identical to Perl's builtin C<gmtime()> function for +converting seconds since the epoch to a date in Greenwich Mean Time, +see L<perlfunc/gmtime>. =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</[[:isalnum:]]/> construct instead, or possibly the C</\w/> 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</[[:isalpha:]]/> 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<perlfunc/-X>. =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</[[:iscntrl:]]/> 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</[[:isdigit:]]/> construct instead, or the C</\d/> 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</[[:isgraph:]]/> 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</[[:islower:]]/> construct instead. Do B<not> use C</a-z/>. =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</[[:isprint:]]/> 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</[[:ispunct:]]/> 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</[[:isspace:]]/> construct instead, or the C</\s/> 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</[[:isupper:]]/> construct instead. Do B<not> use C</A-Z/>. =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</[[:isxdigit:]]/> construct instead, or simply C</[0-9a-f]/i>. =item kill -This is identical to Perl's builtin C<kill()> function. +This is identical to Perl's builtin C<kill()> function for sending +signals to processes (oftern to terminate them), see L<perlfunc/kill>. =item labs -labs() is C-specific, use abs instead. +(For returning absolute values of long integers.) +labs() is C-specific, see L<perlfunc/abs> instead. =item ldexp -This is identical to the C function C<ldexp()>. +This is identical to the C function C<ldexp()> +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<int()> instead. =item link -This is identical to Perl's builtin C<link()> function. +This is identical to Perl's builtin C<link()> function +for creating hard links into files, see L<perlfunc/link>. =item localeconv Get numeric formatting information. Returns a reference to a hash containing the current locale formatting values. -The database for the B<de> (Deutsch or German) locale. +Here is how to query the database for the B<de> (Deutsch or German) locale. $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" ); print "Locale = $loc\n"; @@ -590,19 +703,34 @@ The database for the B<de> (Deutsch or German) locale. =item localtime -This is identical to Perl's builtin C<localtime()> function. +This is identical to Perl's builtin C<localtime()> function for +converting seconds since the epoch to a date see L<perlfunc/localtime>. =item log -This is identical to Perl's builtin C<log()> function. +This is identical to Perl's builtin C<log()> function, +returning the natural (I<e>-based) logarithm of the numerical argument, +see L<perlfunc/log>. =item log10 -This is identical to the C function C<log10()>. +This is identical to the C function C<log10()>, +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<perlfunc/die> instead. =item lseek @@ -616,49 +744,63 @@ Returns C<undef> 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<mblen()>. +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<mbstowcs()>. +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<mbtowc()>. +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<perlfunc/index> instead. =item memcmp -memcmp() is C-specific, use eq instead. +memcmp() is C-specific, use C<eq> instead, see L<perlop>. =item memcpy -memcpy() is C-specific, use = instead. +memcpy() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>. =item memmove -memmove() is C-specific, use = instead. +memmove() is C-specific, use C<=>, see L<perlop>, or see L<perlfunc/substr>. =item memset -memset() is C-specific, use x instead. +memset() is C-specific, use C<x> instead, see L<perlop>. =item mkdir -This is identical to Perl's builtin C<mkdir()> function. +This is identical to Perl's builtin C<mkdir()> function +for creating directories, see L<perlfunc/mkdir>. =item mkfifo -This is similar to the C function C<mkfifo()>. +This is similar to the C function C<mkfifo()> for creating +FIFO special files. -Returns C<undef> on failure. + if (mkfifo($path, $mode)) { .... + +Returns C<undef> on failure. The C<$mode> is similar to the +mode of C<mkdir()>, see L<perlfunc/mkdir>. =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<nice()>. +This is similar to the C function C<nice()>, 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<undef> on failure. =item offsetof -offsetof() is C-specific. +offsetof() is C-specific, you probably want to see L<perlfunc/pack> instead. =item open @@ -720,6 +865,8 @@ Create a new file with mode 0640. Set up the file for writing. Returns C<undef> on failure. +See also L<perlfunc/sysopen>. + =item opendir Open a directory for reading. @@ -743,13 +890,17 @@ Returns C<undef> on failure. =item pause -This is similar to the C function C<pause()>. +This is similar to the C function C<pause()>, which suspends +the execution of the current process until a signal is received. Returns C<undef> on failure. =item perror -This is identical to the C function C<perror()>. +This is identical to the C function C<perror()>, which outputs to the +standard error stream the specified message followed by ": " and the +current error string. Use the C<warn()> function and the C<$!> +variable instead, see L<perlfunc/warn> and L<perlvar/$ERRNO>. =item pipe @@ -760,39 +911,45 @@ returned by C<POSIX::open>. POSIX::write( $fd0, "hello", 5 ); POSIX::read( $fd1, $buf, 5 ); +See also L<perlfunc/pipe>. + =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<perlop>. + =item printf -Prints the specified arguments to STDOUT. +Formats and prints the specified arguments to STDOUT. +See also L<perlfunc/printf>. =item putc -putc() is C-specific--use print instead. +putc() is C-specific, see L<perlfunc/print> instead. =item putchar -putchar() is C-specific--use print instead. +putchar() is C-specific, see L<perlfunc/print> instead. =item puts -puts() is C-specific--use print instead. +puts() is C-specific, see L<perlfunc/print> instead. =item qsort -qsort() is C-specific, use sort instead. +qsort() is C-specific, see L<perlfunc/sort> instead. =item raise Sends the specified signal to the current process. +See also L<perlfunc/kill> and the C<$$> in L<perlvar/$PID>. =item rand -rand() is non-portable, use Perl's rand instead. +C<rand()> is non-portable, see L<perlfunc/rand> instead. =item read @@ -805,21 +962,26 @@ read then Perl will extend it to make room for the request. Returns C<undef> on failure. +See also L<perlfunc/sysread>. + =item readdir -This is identical to Perl's builtin C<readdir()> function. +This is identical to Perl's builtin C<readdir()> function +for reading directory entries, see L<perlfunc/readdir>. =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<unlink()> function. +This is identical to Perl's builtin C<unlink()> function +for removing files, see L<perlfunc/unlink>. =item rename -This is identical to Perl's builtin C<rename()> function. +This is identical to Perl's builtin C<rename()> function +for renaming files, see L<perlfunc/rename>. =item rewind @@ -827,23 +989,29 @@ Seeks to the beginning of the file. =item rewinddir -This is identical to Perl's builtin C<rewinddir()> function. +This is identical to Perl's builtin C<rewinddir()> function for +rewinding directory entry streams, see L<perlfunc/rewinddir>. =item rmdir -This is identical to Perl's builtin C<rmdir()> function. +This is identical to Perl's builtin C<rmdir()> function +for removing (empty) directories, see L<perlfunc/rmdir>. =item scanf -scanf() is C-specific--use <> and regular expressions instead. +scanf() is C-specific, use E<lt>E<gt> and regular expressions instead, +see L<perlre>. =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<perlvar/$UID>. =item setjmp -setjmp() is C-specific: use eval {} instead. +C<setjmp()> is C-specific: use C<eval {}> instead, +see L<perlfunc/eval>. =item setlocale @@ -879,17 +1047,21 @@ out which locales are available in your system. =item setpgid -This is similar to the C function C<setpgid()>. +This is similar to the C function C<setpgid()> for +setting the process group identifier of the current process. Returns C<undef> on failure. =item setsid -This is identical to the C function C<setsid()>. +This is identical to the C function C<setsid()> 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<lt>> variable, +see L<perlvar/$UID>. =item sigaction @@ -905,7 +1077,7 @@ Returns C<undef> on failure. =item siglongjmp -siglongjmp() is C-specific: use die instead. +siglongjmp() is C-specific: use L<perlfunc/die> instead. =item sigpending @@ -933,7 +1105,8 @@ Returns C<undef> on failure. =item sigsetjmp -sigsetjmp() is C-specific: use eval {} instead. +C<sigsetjmp()> is C-specific: use C<eval {}> instead, +see L<perlfunc/eval>. =item sigsuspend @@ -949,63 +1122,79 @@ Returns C<undef> on failure. =item sin -This is identical to Perl's builtin C<sin()> function. +This is identical to Perl's builtin C<sin()> function +for returning the sine of the numerical argument, +see L<perlfunc/sin>. =item sinh -This is identical to the C function C<sinh()>. +This is identical to the C function C<sinh()> +for returning the hyperbolic sine of the numerical argument. =item sleep -This is identical to Perl's builtin C<sleep()> function. +This is identical to Perl's builtin C<sleep()> function +for suspending the execution of the current for process +for certain number of seconds, see L<perlfunc/sleep>. =item sprintf -This is identical to Perl's builtin C<sprintf()> function. +This is similar to Perl's builtin C<sprintf()> function +for returning a string that has the arguments formatted as requested, +see L<perlfunc/sprintf>. =item sqrt This is identical to Perl's builtin C<sqrt()> function. +for returning the square root of the numerical argument, +see L<perlfunc/sqrt>. =item srand -srand(). +Give a seed the pseudorandom number generator, see L<perlfunc/srand>. =item sscanf -sscanf() is C-specific--use regular expressions instead. +sscanf() is C-specific, use regular expressions instead, +see L<perlre>. =item stat -This is identical to Perl's builtin C<stat()> function. +This is identical to Perl's builtin C<stat()> 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<perlop>. =item strchr -strchr() is C-specific, use index() instead. +strchr() is C-specific, see L<perlfunc/index> instead. =item strcmp -strcmp() is C-specific, use eq instead. +strcmp() is C-specific, use C<eq> or C<cmp> instead, see L<perlop>. =item strcoll -This is identical to the C function C<strcoll()>. +This is identical to the C function C<strcoll()> +for collating (comparing) strings transformed using +the C<strxfrm()> function. Not really needed since +Perl can do this transparently, see L<perllocale>. =item strcpy -strcpy() is C-specific, use = instead. +strcpy() is C-specific, use C<=> instead, see L<perlop>. =item strcspn -strcspn() is C-specific, use regular expressions instead. +strcspn() is C-specific, use regular expressions instead, +see L<perlre>. =item strerror Returns the error string for the specified errno. +Identical to the string form of the C<$!>, see L<perlvar/$ERRNO>. =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<length()> instead, see L<perlfunc/length>. =item strncat -strncat() is C-specific, use .= instead. +strncat() is C-specific, use C<.=> instead, see L<perlop>. =item strncmp -strncmp() is C-specific, use eq instead. +strncmp() is C-specific, use C<eq> instead, see L<perlop>. =item strncpy -strncpy() is C-specific, use = instead. - -=item stroul - -stroul() is C-specific. +strncpy() is C-specific, use C<=> instead, see L<perlop>. =item strpbrk -strpbrk() is C-specific. +strpbrk() is C-specific, use regular expressions instead, +see L<perlre>. =item strrchr -strrchr() is C-specific, use rindex() instead. +strrchr() is C-specific, see L<perlfunc/rindex> instead. =item strspn -strspn() is C-specific. +strspn() is C-specific, use regular expressions instead, +see L<perlre>. =item strstr -This is identical to Perl's builtin C<index()> function. +This is identical to Perl's builtin C<index()> function, +see L<perlfunc/index>. =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<perlre>, or L<perlfunc/split>. =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<strtol> for details. +String to unsigned (long) integer translation. strtoul() is identical +to strtol() except that strtoul() only parses unsigned integers. See +L</strtol> 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<strcoll()> function, see L</strcoll>. + +Not really needed since Perl can do this transparently, see +L<perllocale>. + =item sysconf Retrieves values of system configurable variables. @@ -1152,53 +1346,66 @@ Returns C<undef> on failure. =item system -This is identical to Perl's builtin C<system()> function. +This is identical to Perl's builtin C<system()> function, see +L<perlfunc/system>. =item tan -This is identical to the C function C<tan()>. +This is identical to the C function C<tan()>, returning the +tangent of the numerical argument. =item tanh -This is identical to the C function C<tanh()>. +This is identical to the C function C<tanh()>, returning the +hyperbolic tangent of the numerical argument. =item tcdrain -This is similar to the C function C<tcdrain()>. +This is similar to the C function C<tcdrain()> for draining +the output queue of its argument stream. Returns C<undef> on failure. =item tcflow -This is similar to the C function C<tcflow()>. +This is similar to the C function C<tcflow()> for controlling +the flow of its argument stream. Returns C<undef> on failure. =item tcflush -This is similar to the C function C<tcflush()>. +This is similar to the C function C<tcflush()> for flushing +the I/O buffers of its argumeny stream. Returns C<undef> on failure. =item tcgetpgrp -This is identical to the C function C<tcgetpgrp()>. +This is identical to the C function C<tcgetpgrp()> 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<tcsendbreak()>. +This is similar to the C function C<tcsendbreak()> for sending +a break on its argument stream. Returns C<undef> on failure. =item tcsetpgrp -This is similar to the C function C<tcsetpgrp()>. +This is similar to the C function C<tcsetpgrp()> for setting the +process group identifier of the foreground process group of the controlling +terminal. Returns C<undef> on failure. =item time -This is identical to Perl's builtin C<time()> function. +This is identical to Perl's builtin C<time()> function +for returning the number of seconds since the epoch +(whatever it is for the system), see L<perlfunc/time>. =item times @@ -1214,7 +1421,7 @@ seconds. =item tmpfile -Use method C<IO::File::new_tmpfile()> instead. +Use method C<IO::File::new_tmpfile()> instead, or see L<File::Temp>. =item tmpnam @@ -1222,17 +1429,26 @@ Returns a name for a temporary file. $tmpfile = POSIX::tmpnam(); +See also L<File::Temp>. + =item tolower -This is identical to Perl's builtin C<lc()> 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<lc()> function, +see L<perlfunc/lc>, or the equivalent C<\L> operator inside doublequotish +strings. =item toupper -This is identical to Perl's builtin C<uc()> 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<uc()> function, +see L<perlfunc/uc>, or the equivalent C<\U> operator inside doublequotish +strings. =item ttyname -This is identical to the C function C<ttyname()>. +This is identical to the C function C<ttyname()> for returning the +name of the current terminal. =item tzname @@ -1243,17 +1459,31 @@ Retrieves the time conversion information from the C<tzname> variable. =item tzset -This is identical to the C function C<tzset()>. +This is identical to the C function C<tzset()> for setting +the current timezone based on the environment variable C<TZ>, +to be used by C<ctime()>, C<localtime()>, C<mktime()>, and C<strftime()> +functions. =item umask -This is identical to Perl's builtin C<umask()> function. +This is identical to Perl's builtin C<umask()> function +for setting (and querying) the file creation permission mask, +see L<perlfunc/umask>. =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<IO::Handle::ungetc()> instead. =item unlink -This is identical to Perl's builtin C<unlink()> function. +This is identical to Perl's builtin C<unlink()> function +for removing files, see L<perlfunc/unlink>. =item utime -This is identical to Perl's builtin C<utime()> function. +This is identical to Perl's builtin C<utime()> function +for changing the time stamps of files and directories, +see L<perlfunc/utime>. =item vfprintf -vfprintf() is C-specific. +vfprintf() is C-specific, see L<perlfunc/printf> instead. =item vprintf -vprintf() is C-specific. +vprintf() is C-specific, see L<perlfunc/printf> instead. =item vsprintf -vsprintf() is C-specific. +vsprintf() is C-specific, see L<perlfunc/sprintf> instead. =item wait -This is identical to Perl's builtin C<wait()> function. +This is identical to Perl's builtin C<wait()> function, +see L<perlfunc/wait>. =item waitpid Wait for a child process to change state. This is identical to Perl's -builtin C<waitpid()> function. +builtin C<waitpid()> function, see L<perlfunc/waitpid>. $pid = POSIX::waitpid( -1, &POSIX::WNOHANG ); print "status = ", ($? / 256), "\n"; @@ -1294,10 +1528,16 @@ builtin C<waitpid()> function. =item wcstombs This is identical to the C function C<wcstombs()>. +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<wctomb()>. +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<POSIX::open>. Returns C<undef> on failure. +See also L<perlfunc/syswrite>. + =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 9053446da2..719e50a2f4 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 @@ -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 0a5c48b6f3..cb6dd8a9e2 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 index bd1d06581e..bd1d06581e 100644 --- a/pod/Win32.pod +++ b/lib/Win32.pod diff --git a/lib/lib.pm.PL b/lib/lib_pm.PL index 1b5efa08ad..0d2a73b842 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 da6be97952..f98075a5ee 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 108993c75d..a02a298213 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 )]; } @@ -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 @@ -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 a6f4efbeb7..0000000000 --- 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 0000000000..17ba91a120 --- /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 <<!GROK!THIS! +# pod/Makefile +# This file is derived from pod/Makefile.SH. Any changes made here will +# be lost the next time you run Configure. + +POD = $POD + +MAN = $MAN + +# no perltoc.html +HTML = $HTML + +TEX = $TEX + +!GROK!THIS! + +## In the following dollars and backticks do not need the extra backslash. +$spitshell >>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 58bfc54fd7..0000000000 --- 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; - -($_= <<EOPOD2B) =~ s/^\t//gm && output($_); - - =head1 NAME - - perltoc - perl documentation table of contents - - =head1 DESCRIPTION - - This page provides a brief table of contents for the rest of the Perl - documentation set. It is meant to be scanned quickly or grepped - through to locate the proper section you're looking for. - - =head1 BASIC DOCUMENTATION - -EOPOD2B -#' make emacs happy - -podset(@pods); - -find \&getpods => 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 = <F>) { - 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; - } -} - -($_= <<EOPOD2B) =~ s/^\t//gm && output($_); - - - - =head1 PRAGMA DOCUMENTATION - -EOPOD2B - -podset(sort @pragmata); - -($_= <<EOPOD2B) =~ s/^\t//gm && output($_); - - - - =head1 MODULE DOCUMENTATION - -EOPOD2B - -podset( @modules[ sort { $modname[$a] cmp $modname[$b] } 0 .. $#modules ] ); - -($_= <<EOPOD2B) =~ s/^\t//gm; - - - =head1 AUXILIARY DOCUMENTATION - - Here should be listed all the extra programs' documentation, but they - don't all have manual pages yet: - - =over - - =item a2p - - =item s2p - - =item find2perl - - =item h2ph - - =item c2ph - - =item h2xs - - =item xsubpp - - =item pod2man - - =item wrapsuid - - =back - - =head1 AUTHOR - - Larry Wall <F<larry\@wall.org>>, 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<X>/; - 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 0000000000..8e07ce856a --- /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 (<MANI>) { + 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 (<PERLPOD>) { + 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; + +($_= <<EOPOD2B) =~ s/^\t//gm && output($_); + + =head1 NAME + + perltoc - perl documentation table of contents + + =head1 DESCRIPTION + + This page provides a brief table of contents for the rest of the Perl + documentation set. It is meant to be scanned quickly or grepped + through to locate the proper section you're looking for. + + =head1 BASIC DOCUMENTATION + +EOPOD2B +#' make emacs happy + +podset(@pods); + +find \&getpods => 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 = <F>) { + 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; + } +} + +($_= <<EOPOD2B) =~ s/^\t//gm && output($_); + + + + =head1 PRAGMA DOCUMENTATION + +EOPOD2B + +podset(sort @pragmata); + +($_= <<EOPOD2B) =~ s/^\t//gm && output($_); + + + + =head1 MODULE DOCUMENTATION + +EOPOD2B + +podset( @modules[ sort { $modname[$a] cmp $modname[$b] } 0 .. $#modules ] ); + +($_= <<EOPOD2B) =~ s/^\t//gm; + + + =head1 AUXILIARY DOCUMENTATION + + Here should be listed all the extra programs' documentation, but they + don't all have manual pages yet: + + =over + + =item a2p + + =item s2p + + =item find2perl + + =item h2ph + + =item c2ph + + =item h2xs + + =item xsubpp + + =item pod2man + + =item wrapsuid + + =back + + =head1 AUTHOR + + Larry Wall <F<larry\@wall.org>>, 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<X>/; + 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 49fdbf2d6d..ce0d1b4f00 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -12,76 +12,92 @@ B<perl> S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I<configvar>] ]> S<[ B<-i>[I<extension>] ]> S<[ B<-e> I<'command'> ] [ B<--> ] [ I<programfile> ] [ I<argument> ]...> -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 78a631883e..bf59669b59 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -2495,13 +2495,13 @@ first to get the correct constant definitions. If CMD is C<IPC_STAT>, then ARG must be a variable which will hold the returned C<msqid_ds> structure. Returns like C<ioctl>: the undefined value for error, C<"0 but true"> for zero, or the actual return value otherwise. See also -C<IPC::SysV> and C<IPC::Semaphore> documentation. +L<perlipc/"SysV IPC">, C<IPC::SysV>, and C<IPC::Semaphore> 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<IPC::SysV> -and C<IPC::Msg> documentation. +id, or the undefined value if there is an error. See also +L<perlipc/"SysV IPC"> and C<IPC::SysV> and C<IPC::Msg> 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<unpack("l! a*")>. Taints the variable. Returns true if successful, or false if there is -an error. See also C<IPC::SysV> and C<IPC::SysV::Msg> documentation. +an error. See also L<perlipc/"SysV IPC">, C<IPC::SysV>, and +C<IPC::SysV::Msg> documentation. =item msgsnd ID,MSG,FLAGS @@ -3943,13 +3944,15 @@ semid_ds structure or semaphore value array. Returns like C<ioctl>: 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<pack("s!",(0)x$nsem)>. -See also C<IPC::SysV> and C<IPC::Semaphore> documentation. +See also L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::Semaphore> +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<IPC::SysV> and -C<IPC::SysV::Semaphore> documentation. +the undefined value if there is an error. See also +L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::SysV::Semaphore> +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<IPC::SysV> -and C<IPC::SysV::Semaphore> documentation. +To signal the semaphore, replace C<-1> with C<1>. See also +L<perlipc/"SysV IPC">, C<IPC::SysV>, and C<IPC::SysV::Semaphore> +documentation. =item send SOCKET,MSG,FLAGS,TO @@ -4025,13 +4029,13 @@ first to get the correct constant definitions. If CMD is C<IPC_STAT>, then ARG must be a variable which will hold the returned C<shmid_ds> structure. Returns like ioctl: the undefined value for error, "C<0> but true" for zero, or the actual return value otherwise. -See also C<IPC::SysV> documentation. +See also L<perlipc/"SysV IPC"> and C<IPC::SysV> 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<IPC::SysV> documentation. +See also L<perlipc/"SysV IPC"> and C<IPC::SysV> 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<IPC::SysV> documentation and -the C<IPC::Shareable> module from CPAN. +shmread() taints the variable. See also L<perlipc/"SysV IPC">, +C<IPC::SysV> documentation, and the C<IPC::Shareable> module from CPAN. =item shutdown SOCKET,HOW diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 5768081c90..2e23fc9116 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -301,6 +301,2197 @@ authors =back +=head2 perltoc - perl documentation table of contents + +=over + +=item DESCRIPTION + +=item BASIC DOCUMENTATION + +=over + +=item perl - Practical Extraction and Report Language + +SYNOPSIS, DESCRIPTION, AVAILABILITY, ENVIRONMENT, AUTHOR, FILES, SEE ALSO, +DIAGNOSTICS, BUGS, NOTES + +=item perlfaq - frequently asked questions about Perl ($Date: 1999/05/23 +20:38:02 $) + +DESCRIPTION + +=back + +=back + +=head2 perlbook - Perl book information + +=over + +=item DESCRIPTION + +=back + +=head2 perlsyn - Perl syntax + +=over + +=item DESCRIPTION + +=over + +=item Declarations + +=item Simple statements + +=item Compound statements + +=item Loop Control + +=item For Loops + +=item Foreach Loops + +=item Basic BLOCKs and Switch Statements + +=item Goto + +=item PODs: Embedded Documentation + +=item Plain Old Comments (Not!) + +=back + +=back + +=head2 perldata - Perl data types + +=over + +=item DESCRIPTION + +=over + +=item Variable names + +=item Context + +=item Scalar values + +=item Scalar value constructors + +=item List value constructors + +=item Slices + +=item Typeglobs and Filehandles + +=back + +=item SEE ALSO + +=back + +=head2 perlop - Perl operators and precedence + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item Terms and List Operators (Leftward) + +=item The Arrow Operator + +=item Auto-increment and Auto-decrement + +=item Exponentiation + +=item Symbolic Unary Operators + +=item Binding Operators + +=item Multiplicative Operators + +=item Additive Operators + +=item Shift Operators + +=item Named Unary Operators + +=item Relational Operators + +=item Equality Operators + +=item Bitwise And + +=item Bitwise Or and Exclusive Or + +=item C-style Logical And + +=item C-style Logical Or + +=item Range Operators + +=item Conditional Operator + +=item Assignment Operators + +=item Comma Operator + +=item List Operators (Rightward) + +=item Logical Not + +=item Logical And + +=item Logical or and Exclusive Or + +=item C Operators Missing From Perl + +unary &, unary *, (TYPE) + +=item Quote and Quote-like Operators + +=item Regexp Quote-Like Operators + +?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 Gory details of parsing quoted constructs + +Finding the end, Removal of backslashes before delimiters, Interpolation, +C<<<'EOF'>, C<m''>, C<s'''>, C<tr///>, C<y///>, C<''>, C<q//>, C<"">, +C<``>, C<qq//>, C<qx//>, C<< <file*glob> >>, C<?RE?>, C</RE/>, C<m/RE/>, +C<s/RE/foo/>,, Interpolation of regular expressions, Optimization of +regular expressions + +=item I/O Operators + +=item Constant Folding + +=item Bitwise String Operators + +=item Integer Arithmetic + +=item Floating-point Arithmetic + +=item Bigger Numbers + +=back + +=back + +=head2 perlreftut - Mark's very short tutorial about references + +=over + +=item DESCRIPTION + +=item Who Needs Complicated Data Structures? + +=item The Solution + +=item Syntax + +=over + +=item Making References + +=item Using References + +=back + +=item An Example + +=item Arrow Rule + +=item Solution + +=item The Rest + +=item Summary + +=item Credits + +=over + +=item Distribution Conditions + +=back + +=back + +=head2 perldsc - Perl Data Structures Cookbook + +=over + +=item DESCRIPTION + +arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, +more elaborate constructs + +=item REFERENCES + +=item COMMON MISTAKES + +=item CAVEAT ON PRECEDENCE + +=item WHY YOU SHOULD ALWAYS C<use strict> + +=item DEBUGGING + +=item CODE EXAMPLES + +=item ARRAYS OF ARRAYS + +=over + +=item Declaration of a ARRAY OF ARRAYS + +=item Generation of a ARRAY OF ARRAYS + +=item Access and Printing of a ARRAY OF ARRAYS + +=back + +=item HASHES OF ARRAYS + +=over + +=item Declaration of a HASH OF ARRAYS + +=item Generation of a HASH OF ARRAYS + +=item Access and Printing of a HASH OF ARRAYS + +=back + +=item ARRAYS OF HASHES + +=over + +=item Declaration of a ARRAY OF HASHES + +=item Generation of a ARRAY OF HASHES + +=item Access and Printing of a ARRAY OF HASHES + +=back + +=item HASHES OF HASHES + +=over + +=item Declaration of a HASH OF HASHES + +=item Generation of a HASH OF HASHES + +=item Access and Printing of a HASH OF HASHES + +=back + +=item MORE ELABORATE RECORDS + +=over + +=item Declaration of MORE ELABORATE RECORDS + +=item Declaration of a HASH OF COMPLEX RECORDS + +=item Generation of a HASH OF COMPLEX RECORDS + +=back + +=item Database Ties + +=item SEE ALSO + +=item AUTHOR + +=back + +=head2 perllol - Manipulating Arrays of Arrays in Perl + +=over + +=item DESCRIPTION + +=item Declaration and Access of Arrays of Arrays + +=item Growing Your Own + +=item Access and Printing + +=item Slices + +=item SEE ALSO + +=item AUTHOR + +=back + +=head2 perlrequick - Perl regular expressions quick start + +=over + +=item DESCRIPTION + +=item The Guide + +=over + +=item Simple word matching + +=item Using character classes + +\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" + +=item Matching this or that + +=item Grouping things and hierarchical matching + +=item Extracting matches + +=item Matching repetitions + +C<a?> = match 'a' 1 or 0 times, C<a*> = match 'a' 0 or more times, i.e., +any number of times, C<a+> = match 'a' 1 or more times, i.e., at least +once, C<a{n,m}> = match at least C<n> times, but not more than C<m> times, +C<a{n,}> = match at least C<n> or more times, C<a{n}> = match exactly C<n> +times + +=item More matching + +=item Search and replace + +=item The split operator + +=back + +=item BUGS + +=item SEE ALSO + +=item AUTHOR AND COPYRIGHT + +=over + +=item Acknowledgments + +=back + +=back + +=head2 perlretut - Perl regular expressions tutorial + +=over + +=item DESCRIPTION + +=item Part 1: The basics + +=over + +=item Simple word matching + +=item Using character classes + +\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<any> 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<any> +line within the string + +=item Matching this or that + +=item Grouping things and hierarchical matching + +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 Extracting matches + +=item Matching repetitions + +C<a?> = match 'a' 1 or 0 times, C<a*> = match 'a' 0 or more times, i.e., +any number of times, C<a+> = match 'a' 1 or more times, i.e., at least +once, C<a{n,m}> = match at least C<n> times, but not more than C<m> times, +C<a{n,}> = match at least C<n> or more times, C<a{n}> = match exactly C<n> +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<a|b|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<a??> = match 'a' 0 or 1 times. Try +0 first, then 1, C<a*?> = match 'a' 0 or more times, i.e., any number of +times, but as few times as possible, C<a+?> = match 'a' 1 or more times, +i.e., at least once, but as few times as possible, C<a{n,m}?> = match at +least C<n> times, not more than C<m> times, as few times as possible, +C<a{n,}?> = match at least C<n> times, but as few times as possible, +C<a{n}?> = match exactly C<n> times. Because we match exactly C<n> times, +C<a{n}?> is equivalent to C<a{n}> 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 Building a regexp + +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 Using regular expressions in Perl + +=back + +=item Part 2: Power tools + +=over + +=item More on characters, strings, and character classes + +=item Compiling and saving regular expressions + +=item Embedding comments and modifiers in a regular expression + +=item Non-capturing groupings + +=item Looking ahead and looking behind + +=item Using independent subexpressions to prevent backtracking + +=item Conditional expressions + +=item A bit of magic: executing Perl code in a regular expression + +=item Pragmas and debugging + +=back + +=item BUGS + +=item SEE ALSO + +=item AUTHOR AND COPYRIGHT + +=over + +=item Acknowledgments + +=back + +=back + +=head2 perllexwarn - Perl Lexical Warnings + +=over + +=item DESCRIPTION + +=over + +=item Default Warnings and Optional Warnings + +=item What's wrong with B<-w> and C<$^W> + +=item Controlling Warnings from the Command Line + +B<-w>, B<-W>, B<-X> + +=item Backward Compatibility + +=item Category Hierarchy + +=item Fatal Warnings + +=item Reporting Warnings from a Module + +=back + +=item TODO + +=item SEE ALSO + +=item AUTHOR + +=back + +=head2 perldebug - Perl debugging + +=over + +=item DESCRIPTION + +=item The Perl Debugger + +=over + +=item Debugger Commands + +h [command], p expr, x expr, V [pkg [vars]], X [vars], T, s [expr], n +[expr], r, <CR>, 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 + +C<recallCommand>, C<ShellBang>, C<pager>, C<tkRunning>, C<signalLevel>, +C<warnLevel>, C<dieLevel>, C<AutoTrace>, C<LineInfo>, C<inhibit_exit>, +C<PrintRet>, C<ornaments>, C<frame>, C<maxTraceLen>, C<arrayDepth>, +C<hashDepth>, C<compactDump>, C<veryCompact>, C<globPrint>, C<DumpDBFiles>, +C<DumpPackages>, C<DumpReused>, C<quote>, C<HighBit>, C<undefPrint>, +C<UsageOnly>, C<TTY>, C<noTTY>, C<ReadLine>, C<NonStop> + +=item Debugger input/output + +Prompt, Multiline commands, Stack backtrace, Line Listing Format, Frame +listing + +=item Debugging compile-time statements + +=item Debugger Customization + +=item Readline Support + +=item Editor Support for Debugging + +=item The Perl Profiler + +=back + +=item Debugging regular expressions + +=item Debugging memory usage + +=item SEE ALSO + +=item BUGS + +=back + +=head2 perlrun - how to execute the Perl interpreter + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item #! and quoting on non-Unix systems + +OS/2, MS-DOS, Win95/NT, Macintosh, VMS + +=item Location of Perl + +=item Command Switches + +B<-0>[I<digits>], B<-a>, B<-C>, B<-c>, B<-d>, B<-d:>I<foo>, +B<-D>I<letters>, B<-D>I<number>, B<-e> I<commandline>, B<-F>I<pattern>, +B<-h>, B<-i>[I<extension>], B<-I>I<directory>, B<-l>[I<octnum>], +B<-m>[B<->]I<module>, B<-M>[B<->]I<module>, B<-M>[B<->]I<'module ...'>, +B<-[mM]>[B<->]I<module=arg[,arg]...>, B<-n>, B<-p>, B<-P>, B<-s>, B<-S>, +B<-T>, B<-u>, B<-U>, B<-v>, B<-V>, B<-V:>I<name>, B<-w>, B<-W>, B<-X>, +B<-x> I<directory> + +=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<agrave> la shell + +=over + +=item Simple Opens + +=item Pipe Opens + +=item The Minus File + +=item Mixing Reads and Writes + +=item Filters + +=back + +=item Open E<agrave> la C + +=over + +=item Permissions E<agrave> 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, $_, $<I<digits>>, $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<substr($var, 0, $-[0])>, C<$&> is the same as C<substr($var, $-[0], $+[0] +- $-[0])>, C<$'> is the same as C<substr($var, $+[0])>, C<$1> is the same +as C<substr($var, $-[1], $+[1] - $-[1])>, C<$2> is the same as +C<substr($var, $-[2], $+[2] - $-[2])>, C<$3> is the same as C<substr $var, +$-[3], $+[3] - $-[3])>, 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<DECOMPRESS> the file, B<UNPACK> the file into a directory, B<BUILD> the +module (sometimes unnecessary), B<INSTALL> 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<h2xs>, Use L<strict|strict> and L<warnings|warnings>, Use +L<Carp|Carp>, Use L<Exporter|Exporter> - wisely!, Use L<plain old +documentation|perlpod>, Write tests, Write the README + +=item Step-by-step: Distributing your module + +Get a CPAN user ID, C<perl Makefile.PL; make test; make dist>, 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<require>/C<do> trap using returned value, C<split> 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<is> +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<perlos2> + +=item S<Mac OS> + +=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<X> FILEHANDLE, -I<X> EXPR, -I<X>, 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<(?<!pattern)>, 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<ST>, C<S|T>, C<S{REPEAT_COUNT}>, C<S{min,max}>, C<S{min,max}?>, C<S?>, +C<S*>, C<S+>, C<S??>, C<S*?>, C<S+?>, C<< (?>S) >>, C<(?=S)>, C<(?<=S)>, +C<(?!S)>, C<(?<!S)>, 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<Comparison operators> (C<lt>, C<le>, C<ge>, C<gt> and C<cmp>):, +B<Case-mapping interpolation> (with C<\l>, C<\L>, C<\u> or C<\U>), +B<Matching operator> (C<m//>):, B<Substitution operator> (C<s///>):, +B<Output formatting functions> (printf() and write()):, B<Case-mapping +functions> (lc(), lcfirst(), uc(), ucfirst()):, B<POSIX locale-dependent +functions> (localeconv(), strcoll(), strftime(), strxfrm()):, B<POSIX +character class tests> (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<use utf8> 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<untie> 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<Proto>, C<PeerAddr>, C<PeerPort> + +=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<no integer>, Arithmetic operators except, +C<use integer>, Bitwise operators, C<no integer>, Bitwise operators, C<use +integer>, 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 $) @@ -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 Layout -=item Unicode and UTF-8 support +B::Bytecode, B::C, B::CC, B::Lint, B::Deparse, B::Xref -=item Support for interpolating named characters +=back -=item "our" declarations +=item Using The Back Ends -=item Support for strings represented as a vector of ordinals +=over -=item Improved Perl version numbering system +=item The Cross Referencing Back End -=item New syntax for declaring subroutine attributes +i, &, s, r -=item File and directory handles can be autovivified +=item The Decompiling Back End -=item open() with more than two arguments +=item The Lint Back End -=item 64-bit support +=item The Simple C Back End -=item Large file support +=item The Bytecode Back End -=item Long doubles +=item The Optimized C Back End -=item "more bits" +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 Enhanced support for sort() subroutines +=back -=item C<sort $coderef @foo> allowed +=item KNOWN PROBLEMS -=item File globbing implemented internally +=item AUTHOR -Support for CHECK blocks +=back -=item POSIX character class syntax [: :] supported +=head2 perlembed - how to embed perl in your C program -Better pseudo-random number generator +=over -=item Improved C<qw//> operator +=item DESCRIPTION -Better worst-case behavior of hashes +=over -=item pack() format 'Z' supported +=item PREAMBLE -=item pack() format modifier '!' supported +B<Use C from Perl?>, B<Use a Unix program from Perl?>, B<Use Perl from +Perl?>, B<Use C from C?>, B<Use Perl from C?> -=item pack() and unpack() support counted strings +=item ROADMAP -=item Comments in pack() templates +=item Compiling your C program -=item Weak references +=item Adding a Perl interpreter to your C program -=item Binary numbers supported +=item Calling a Perl subroutine from your C program -=item Lvalue subroutines +=item Evaluating a Perl statement from your C program -=item Some arrows may be omitted in calls through references +=item Performing Perl pattern matches and substitutions from your C program -=item Boolean assignment operators are legal lvalues +=item Fiddling with the Perl stack from your C program -=item exists() is supported on subroutine names +=item Maintaining a persistent interpreter -=item exists() and delete() are supported on array elements +=item Maintaining multiple interpreter instances -=item Pseudo-hashes work better +=item Using Perl modules, which themselves use C libraries, from your C +program -=item Automatic flushing of output buffers +=back -=item Better diagnostics on meaningless filehandle operations +=item Embedding Perl under Windows -=item Where possible, buffered data discarded from duped input filehandle +=item MORAL -=item eof() has the same old magic as <> +=item AUTHOR -=item binmode() can be used to set :crlf and :raw modes +=item COPYRIGHT -=item C<-T> filetest recognizes UTF-8 encoded files as "text" +=back -=item system(), backticks and pipe open now reflect exec() failure +=head2 perldebguts - Guts of Perl debugging -=item Improved diagnostics +=over -=item Diagnostics follow STDERR +=item DESCRIPTION -More consistent close-on-exec behavior +=item Debugger Internals -=item syswrite() ease-of-use +=over -=item Better syntax checks on parenthesized unary operators +=item Writing Your Own Debugger -=item Bit operators support full native integer width +=back -=item Improved security features +=item Frame Listing Output Examples -More functional bareword prototype (*) +=item Debugging regular expressions -=item C<require> and C<do> may be overridden +=over -=item $^X variables may now have names longer than one character +=item Compile-time output -=item New variable $^C reflects C<-c> switch +C<anchored> I<STRING> C<at> I<POS>, C<floating> I<STRING> C<at> +I<POS1..POS2>, C<matching floating/anchored>, C<minlen>, C<stclass> +I<TYPE>, C<noscan>, C<isall>, C<GPOS>, C<plus>, C<implicit>, C<with eval>, +C<anchored(TYPE)> -=item New variable $^V contains Perl version as a string +=item Types of nodes -=item Optional Y2K warnings +=item Run-time output =back -=item Modules and Pragmata +=item Debugging Perl memory usage =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 Pragmata - -=back +=item Using C<$ENV{PERL_DEBUG_MSTATS}> -=item Utility Changes +C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>, Free/Used, C<Total sbrk(): +SBRKed/SBRKs:CONTINUOUS>, C<pad: 0>, C<heads: 2192>, C<chain: 0>, C<tail: +6144> -=over +=item Example of using B<-DL> switch -=item dprofpp +C<717>, C<002>, C<054>, C<602>, C<702>, C<704> -=item find2perl +=item B<-DL> details -=item h2xs +C<!!!>, C<!!>, C<!> -=item perlcc +=item Limitations of B<-DL> statistics -=item perldoc +=back -=item The Perl Debugger +=item SEE ALSO =back -=item Improved Documentation +=head2 perlxstut, perlXStut - Tutorial for writing XSUBs -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 +=over -=item Performance enhancements +=item DESCRIPTION -=over +=item SPECIAL NOTES -=item Simple sort() using { $a <=> $b } and the like are optimized +=over -=item Optimized assignments to lexical variables +=item make -=item Faster subroutine calls +=item Version caveat -delete(), each(), values() and hash iteration are faster +=item Dynamic Loading versus Static Loading =back -=item Installation and Configuration Improvements +=item TUTORIAL =over -=item -Dusethreads means something different - -=item New Configure flags - -=item Threadedness and 64-bitness now more daring - -=item Long Doubles - -=item -Dusemorebits +=item EXAMPLE 1 -=item -Duselargefiles +=item EXAMPLE 2 -=item installusrbinperl +=item What has gone on? -=item SOCKS support +=item Writing good test scripts -=item C<-A> flag +=item EXAMPLE 3 -=item Enhanced Installation Directories +=item What's new here? -=back +=item Input and Output Parameters -=item Platform specific changes +=item The XSUBPP Program -=over +=item The TYPEMAP file -=item Supported platforms +=item Warning about Output Arguments -=item DOS +=item EXAMPLE 4 -=item OS390 (OpenEdition MVS) +=item What has happened here? -=item VMS +=item Anatomy of .xs file -=item Win32 +=item Getting the fat out of XSUBs -=back +=item More about XSUB arguments -=item Significant bug fixes +=item The Argument Stack -=over +=item Extending your Extension -=item <HANDLE> on empty files +=item Documenting your Extension -=item C<eval '...'> improvements +=item Installing your Extension -=item All compilation errors are true errors +=item EXAMPLE 5 -=item Implicitly closed filehandles are safer +=item New Things in this Example -=item Behavior of list slices is more consistent +=item EXAMPLE 6 -=item C<(\$)> prototype and C<$foo{a}> +=item New Things in this Example -=item C<goto &sub> and AUTOLOAD +=item EXAMPLE 7 (Coming Soon) -=item C<-bareword> allowed under C<use integer> +=item EXAMPLE 8 (Coming Soon) -=item Failures in DESTROY() +=item EXAMPLE 9 (Coming Soon) -=item Locale bugs fixed +=item Troubleshooting these Examples -=item Memory leaks +=back -=item Spurious subroutine stubs after failed subroutine calls +=item See also -=item Taint failures under C<-U> +=item Author -=item END blocks and the C<-c> switch +=over -=item Potential to leak DATA filehandles +=item Last Changed =back -=item New or Changed Diagnostics - -"%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 New tests +=back -=item Incompatible Changes +=head2 perlxs - XS language reference manual =over -=item Perl Source Incompatibilities +=item DESCRIPTION -CHECK is a new keyword, Treatment of list slices of undef has changed +=over -=item Format of $English::PERL_VERSION is different +=item Introduction -Literals of the form C<1.2.3> parse differently, Possibly changed -pseudo-random number generator, Hashing function for hash keys has changed, -C<undef> 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 On The Road -=item Semantics of bit operators may have changed on 64-bit platforms +=item The Anatomy of an XSUB -=item More builtins taint their results +=item The Argument Stack -=item C Source Incompatibilities +=item The RETVAL Variable -C<PERL_POLLUTE>, C<PERL_IMPLICIT_CONTEXT>, C<PERL_POLLUTE_MALLOC> +=item The MODULE Keyword -=item Compatible C Source API Changes +=item The PACKAGE Keyword -C<PATCHLEVEL> is now C<PERL_VERSION> +=item The PREFIX Keyword -=item Binary Incompatibilities +=item The OUTPUT: Keyword -=back +=item The CODE: Keyword -=item Known Problems +=item The INIT: Keyword -=over +=item The NO_INIT Keyword -=item Thread test failures +=item Initializing Function Parameters -=item EBCDIC platforms not supported +=item Default Parameter Values -=item In 64-bit HP-UX the lib/io_multihomed test may hang +=item The PREINIT: Keyword -=item NEXTSTEP 3.3 POSIX test failure +=item The SCOPE: Keyword -=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with -gcc +=item The INPUT: Keyword -=item UNICOS/mk CC failures during Configure run +=item Variable-length Parameter Lists -=item Arrow operator and arrays +=item The C_ARGS: Keyword -=item Windows 2000 +=item The PPCODE: Keyword -=item Experimental features +=item Returning Undef And Empty Lists -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 REQUIRE: Keyword -=back +=item The CLEANUP: Keyword -=item Obsolete Diagnostics +=item The BOOT: 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 "$$<digit>" to mean "${$}<digit>" is deprecated +=item The VERSIONCHECK: Keyword -=item Reporting Bugs +=item The PROTOTYPES: Keyword -=item SEE ALSO +=item The PROTOTYPE: Keyword -=item HISTORY +=item The ALIAS: Keyword -=back +=item The INTERFACE: Keyword -=head2 perldata - Perl data types +=item The INTERFACE_MACRO: Keyword -=over +=item The INCLUDE: Keyword -=item DESCRIPTION +=item The CASE: Keyword -=over +=item The & Unary Operator -=item Variable names +=item Inserting Comments and C Preprocessor Directives -=item Context +=item Using XS With C++ -=item Scalar values +=item Interface Strategy -=item Scalar value constructors +=item Perl Objects And C Structures -=item List value constructors +=item The Typemap -=item Slices +=back -=item Typeglobs and Filehandles +=item EXAMPLES -=back +=item XS VERSION -=item SEE ALSO +=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<SAVEINT(int i)>, C<SAVEIV(IV i)>, C<SAVEI32(I32 i)>, C<SAVELONG(long i)>, +C<SAVESPTR(s)>, C<SAVEPPTR(p)>, C<SAVEFREESV(SV *sv)>, C<SAVEFREEOP(OP +*op)>, C<SAVEFREEPV(p)>, C<SAVECLEARSV(SV *sv)>, C<SAVEDELETE(HV *hv, char +*key, I32 length)>, C<SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void +*p)>, C<SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)>, C<SAVESTACK_POS()>, +C<SV* save_scalar(GV *gv)>, C<AV* save_ary(GV *gv)>, C<HV* save_hash(GV +*gv)>, C<void save_item(SV *item)>, C<void save_list(SV **sarg, I32 +maxsarg)>, C<SV* save_svref(SV **sptr)>, C<void save_aptr(AV **aptr)>, +C<void save_hptr(HV **hptr)> -=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<m''>, C<s'''>, C<tr///>, C<y///>, C<''>, C<q//>, C<"">, -C<``>, C<qq//>, C<qx//>, C<< <file*glob> >>, C<?RE?>, C</RE/>, C<m/RE/>, -C<s/RE/foo/>,, 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<(?<!pattern)>, 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<ST>, C<S|T>, C<S{REPEAT_COUNT}>, C<S{min,max}>, C<S{min,max}?>, C<S?>, -C<S*>, C<S+>, C<S??>, C<S*?>, C<S+?>, C<< (?>S) >>, C<(?=S)>, C<(?<=S)>, -C<(?!S)>, C<(?<!S)>, 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<digits>], B<-a>, B<-C>, B<-c>, B<-d>, B<-d:>I<foo>, -B<-D>I<letters>, B<-D>I<number>, B<-e> I<commandline>, B<-F>I<pattern>, -B<-h>, B<-i>[I<extension>], B<-I>I<directory>, B<-l>[I<octnum>], -B<-m>[B<->]I<module>, B<-M>[B<->]I<module>, B<-M>[B<->]I<'module ...'>, -B<-[mM]>[B<->]I<module=arg[,arg]...>, B<-n>, B<-p>, B<-P>, B<-s>, B<-S>, -B<-T>, B<-u>, B<-U>, B<-v>, B<-V>, B<-V:>I<name>, B<-w>, B<-W>, B<-X>, -B<-x> I<directory> +=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 -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<perldoc|perldoc>, L<pod2man|pod2man> and L<pod2text|pod2text>, +L<pod2html|pod2html> and L<pod2latex|pod2latex>, L<pod2usage|pod2usage>, +L<podselect|podselect>, L<podchecker|podchecker>, L<splain|splain>, +L<roffitall|roffitall> -=item Portability +=item CONVERTORS -=item Alphabetical Listing of Perl Functions +L<a2p|a2p>, L<s2p|s2p>, L<find2perl|find2perl> -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 Development + +L<perlbug|perlbug>, L<h2ph|h2ph>, L<c2ph|c2ph> and L<pstruct|pstruct>, +L<h2xs|h2xs>, L<dprofpp|dprofpp>, L<perlcc|perlcc> + +=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, $_, $<I<digits>>, $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<substr($var, 0, $-[0])>, C<$&> is the same as C<substr($var, $-[0], $+[0] -- $-[0])>, C<$'> is the same as C<substr($var, $+[0])>, C<$1> is the same -as C<substr($var, $-[1], $+[1] - $-[1])>, C<$2> is the same as -C<substr($var, $-[2], $+[2] - $-[2])>, C<$3> is the same as C<substr $var, -$-[3], $+[3] - $-[3])>, 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<Decryption Filters> -=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<filter_store_key>, B<filter_store_value>, B<filter_fetch_key>, +B<filter_fetch_value> -=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<internal> + 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<PerlIO *>, B<PerlIO_stdin()>, B<PerlIO_stdout()>, B<PerlIO_stderr()>, +B<PerlIO_open(path, mode)>, B<PerlIO_fdopen(fd,mode)>, +B<PerlIO_printf(f,fmt,...)>, B<PerlIO_vprintf(f,fmt,a)>, +B<PerlIO_stdoutf(fmt,...)>, B<PerlIO_read(f,buf,count)>, +B<PerlIO_write(f,buf,count)>, B<PerlIO_close(f)>, B<PerlIO_puts(f,s)>, +B<PerlIO_putc(f,c)>, B<PerlIO_ungetc(f,c)>, B<PerlIO_getc(f)>, +B<PerlIO_eof(f)>, B<PerlIO_error(f)>, B<PerlIO_fileno(f)>, +B<PerlIO_clearerr(f)>, B<PerlIO_flush(f)>, B<PerlIO_tell(f)>, +B<PerlIO_seek(f,o,w)>, B<PerlIO_getpos(f,p)>, B<PerlIO_setpos(f,p)>, +B<PerlIO_rewind(f)>, B<PerlIO_tmpfile()> -=item Perl Classes +=over -=item Perl Modules +=item Co-existence with stdio -=back +B<PerlIO_importFILE(f,flags)>, B<PerlIO_exportFILE(f,flags)>, +B<PerlIO_findFILE(f)>, B<PerlIO_releaseFILE(p,f)>, B<PerlIO_setlinebuf(f)>, +B<PerlIO_has_cntptr(f)>, B<PerlIO_get_ptr(f)>, B<PerlIO_get_cnt(f)>, +B<PerlIO_canset_cnt(f)>, B<PerlIO_fast_gets(f)>, +B<PerlIO_set_ptrcnt(f,p,c)>, B<PerlIO_set_cnt(f,c)>, B<PerlIO_has_base(f)>, +B<PerlIO_get_base(f)>, B<PerlIO_get_bufsiz(f)> -=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 - -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 Mailing list archives -=item Standard Modules +=item Bug tracking system -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 +=item Regression Tests -=item Extension Modules +Coverage, Regression, __DIE__, suidperl, The 25% slowdown from perl4 to +perl5 =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 +=item Configure =over -=item Guidelines for Module Creation +=item Install HTML -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 +=back -=item Guidelines for Converting Perl 4 Library Scripts into Modules +=item Perl Language -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 +=over -=item Guidelines for Reusing Application Code +=item our ($var) -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 64-bit Perl -=back +=item Prototypes -=item NOTE +Named prototypes, Indirect objects, Method calls, Context, Scoped subs =back -=head2 perlmodinstall - Installing CPAN Modules +=item Perl Internals =over -=item DESCRIPTION +=item magic_setisa -=over +=item Garbage Collection -=item PREAMBLE +=item Reliable signals -B<DECOMPRESS> the file, B<UNPACK> the file into a directory, B<BUILD> the -module (sometimes unnecessary), B<INSTALL> the module +Alternate runops() for signal despatch, Figure out how to die() in delayed +sighandler, Add tests for Thread::Signal, Automatic tests against CPAN -=back +=item Interpolated regex performance bugs -=item HEY +=item Memory leaks from failed eval/regcomp -=item AUTHOR +=item Make XS easier to use -=item COPYRIGHT +=item Make embedded Perl easier to use -=back +=item Namespace cleanup -=head2 perlfork - Perl's fork() emulation +=item MULTIPLICITY -=over +=item MacPerl -=item SYNOPSIS +=back -=item DESCRIPTION +=item Documentation =over -=item Behavior of other Perl features in forked pseudo-processes +=item A clear division into tutorial and reference -$$ 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 Remove the artificial distinction between operators and functions -=item Resource limits +=item More tutorials -=item Killing the parent process +Regular expressions, I/O, pack/unpack, Debugging -=item Lifetime of the parent process and pseudo-processes +=item Include a search tool -=item CAVEATS AND LIMITATIONS +=item Include a locate tool -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 Separate function manpages by default -=back +=item Users can't find the manpages -=item BUGS +=item Install ALL Documentation -=item AUTHOR +=item Outstanding issues to be documented -=item SEE ALSO +=item Adapt www.linuxhq.com for Perl + +=item Replace man with a perl program + +=item Unicode tutorial =back -=head2 perlform - Perl formats +=item Modules =over -=item DESCRIPTION +=item Update the POSIX extension to conform with the POSIX 1003.1 Edition 2 -=over +=item Module versions -=item Format Variables +=item New modules -=back +=item Profiler -=item NOTES +=item Tie Modules -=over +VecArray, SubstrArray, VirtualArray, ShiftSplice -=item Footers +=item Procedural options -=item Accessing Formatting Internals +=item RPC -=back +=item y2k localtime/gmtime -=item WARNINGS +=item Export File::Find variables -=back +=item Ioctl -=head2 perllocale - Perl locale handling (internationalization and -localization) +=item Debugger attach/detach -=over +=item Regular Expression debugger -=item DESCRIPTION +=item Alternative RE Syntax -=item PREPARING TO USE LOCALES +=item Bundled modules -=item USING LOCALES +=item Expect -=over +=item GUI::Native -=item The use locale pragma +=item Update semibroken auxiliary tools; h2ph, a2p, etc. -=item The setlocale function +=item POD Converters -=item Finding locales +=item pod2html -=item LOCALE PROBLEMS +=item Podchecker -=item Temporarily fixing locale problems +=back -=item Permanently fixing locale problems +=item Tom's Wishes -=item Permanently fixing your system's locale configuration +=over -=item Fixing system locale configuration +=item Webperl -=item The localeconv function +=item Mobile agents + +=item POSIX on non-POSIX + +=item Portable installations =back -=item LOCALE CATEGORIES +=item Win32 Stuff =over -=item Category LC_COLLATE: Collation +=item Rename new headers to be consistent with the rest -=item Category LC_CTYPE: Character Types +=item Sort out the spawnvp() mess -=item Category LC_NUMERIC: Numeric Formatting +=item Work out DLL versioning -=item Category LC_MONETARY: Formatting of monetary amounts +=item Style-check -=item LC_TIME +=back -=item Other categories +=item Would be nice to have -=back +C<pack "(stuff)*">, 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 SECURITY +=item Possible pragmas -B<Comparison operators> (C<lt>, C<le>, C<ge>, C<gt> and C<cmp>):, -B<Case-mapping interpolation> (with C<\l>, C<\L>, C<\u> or C<\U>), -B<Matching operator> (C<m//>):, B<Substitution operator> (C<s///>):, -B<Output formatting functions> (printf() and write()):, B<Case-mapping -functions> (lc(), lcfirst(), uc(), ucfirst()):, B<POSIX locale-dependent -functions> (localeconv(), strcoll(), strftime(), strxfrm()):, B<POSIX -character class tests> (isalnum(), isalpha(), isdigit(), isgraph(), -islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit()): +=over -=item ENVIRONMENT +=item 'less' -PERL_BADLANG, LC_ALL, LANGUAGE, LC_CTYPE, LC_COLLATE, LC_MONETARY, -LC_NUMERIC, LC_TIME, LANG +=back -=item NOTES +=item Optimizations =over -=item Backward compatibility +=item constant function cache -=item I18N:Collate obsolete +=item foreach(reverse...) -=item Sort speed and memory use impacts +=item Cache eval tree -=item write() and LC_NUMERIC +=item rcatmaybe -=item Freely available locale definitions +=item Shrink opcode tables -=item I18n and l10n +=item Cache hash value -=item An imperfect standard +=item Optimize away @_ where possible + +=item Optimize sort by { $a <=> $b } + +=item Rewrite regexp parser for better integrated optimization =back -=item BUGS +=item Vague possibilities + +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 To Do Or Not To Do =over -=item Broken systems +=item Making my() work on "package" variables -=back +=item "or" testing defined not truth -=item SEE ALSO +=item "dynamic" lexicals -=item HISTORY +=item "class"-based, rather than package-based "lexicals" =back -=head2 perlref - Perl references and nested data structures +=item Threading =over -=item NOTE +=item Modules -=item DESCRIPTION +=item Testing -=over +=item $AUTOLOAD -=item Making References - -=item Using References +=item exit/die -=item Symbolic references +=item External threads -=item Not-so-symbolic references +=item Thread::Pool -=item Pseudo-hashes: Using an array as a hash +=item thread-safety -=item Function Templates +=item Per-thread GVs =back -=item WARNING +=item Compiler -=item SEE ALSO +=over -=back +=item Optimization -=head2 perlreftut - Mark's very short tutorial about references +=item Byteperl -=over +=item Precompiled modules -=item DESCRIPTION +=item Executables -=item Who Needs Complicated Data Structures? +=item Typed lexicals -=item The Solution +=item Win32 -=item Syntax +=item END blocks -=over +=item _AUTOLOAD -=item Making References +=item comppadlist -=item Using References +=item Cached compilation =back -=item An Example +=item Recently Finished Tasks -=item Arrow Rule +=over -=item Solution +=item Figure a way out of $^(capital letter) -=item The Rest +=item Filenames -=item Summary +=item Foreign lines -=item Credits +=item Namespace cleanup -=over +=item ISA.pm -=item Distribution Conditions +=item gettimeofday + +=item autocroak? =back =back -=head2 perldsc - Perl Data Structures Cookbook +=head2 perlhack - How to hack at the Perl internals =over =item DESCRIPTION -arrays of arrays, hashes of arrays, arrays of hashes, hashes of hashes, -more elaborate constructs +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 REFERENCES +=item AUTHOR -=item COMMON MISTAKES +=back -=item CAVEAT ON PRECEDENCE +=head2 perlhist - the Perl history records -=item WHY YOU SHOULD ALWAYS C<use strict> +=over -=item DEBUGGING +=item DESCRIPTION -=item CODE EXAMPLES +=item INTRODUCTION -=item ARRAYS OF ARRAYS +=item THE KEEPERS OF THE PUMPKIN =over -=item Declaration of a ARRAY OF ARRAYS - -=item Generation of a ARRAY OF ARRAYS - -=item Access and Printing of a ARRAY OF ARRAYS +=item PUMPKIN? =back -=item HASHES OF ARRAYS +=item THE RECORDS =over -=item Declaration of a HASH OF ARRAYS +=item SELECTED RELEASE SIZES -=item Generation of a HASH OF ARRAYS +=item SELECTED PATCH SIZES -=item Access and Printing of a HASH OF ARRAYS +=back + +=item THE KEEPERS OF THE RECORDS =back -=item ARRAYS OF HASHES +=head2 perldelta - what's new for perl v5.6.0 =over -=item Declaration of a ARRAY OF HASHES - -=item Generation of a ARRAY OF HASHES +=item DESCRIPTION -=item Access and Printing of a ARRAY OF HASHES +=item Core Enhancements -=back +=over -=item HASHES OF HASHES +=item Interpreter cloning, threads, and concurrency -=over +=item Lexically scoped warning categories -=item Declaration of a HASH OF HASHES +=item Unicode and UTF-8 support -=item Generation of a HASH OF HASHES +=item Support for interpolating named characters -=item Access and Printing of a HASH OF HASHES +=item "our" declarations -=back +=item Support for strings represented as a vector of ordinals -=item MORE ELABORATE RECORDS +=item Improved Perl version numbering system -=over +=item New syntax for declaring subroutine attributes -=item Declaration of MORE ELABORATE RECORDS +=item File and directory handles can be autovivified -=item Declaration of a HASH OF COMPLEX RECORDS +=item open() with more than two arguments -=item Generation of a HASH OF COMPLEX RECORDS +=item 64-bit support -=back +=item Large file support -=item Database Ties +=item Long doubles -=item SEE ALSO +=item "more bits" -=item AUTHOR +=item Enhanced support for sort() subroutines -=back +=item C<sort $coderef @foo> allowed -=head2 perllol - Manipulating Arrays of Arrays in Perl +=item File globbing implemented internally -=over +Support for CHECK blocks -=item DESCRIPTION +=item POSIX character class syntax [: :] supported -=item Declaration and Access of Arrays of Arrays +Better pseudo-random number generator -=item Growing Your Own +=item Improved C<qw//> operator -=item Access and Printing +Better worst-case behavior of hashes -=item Slices +=item pack() format 'Z' supported -=item SEE ALSO +=item pack() format modifier '!' supported -=item AUTHOR +=item pack() and unpack() support counted strings -=back +=item Comments in pack() templates -=head2 perlboot - Beginner's Object-Oriented Tutorial +=item Weak references -=over +=item Binary numbers supported -=item DESCRIPTION +=item Lvalue subroutines -=over +=item Some arrows may be omitted in calls through references -=item If we could talk to the animals... +=item Boolean assignment operators are legal lvalues -=item Introducing the method invocation arrow +=item exists() is supported on subroutine names -=item Invoking a barnyard +=item exists() and delete() are supported on array elements -=item The extra parameter of method invocation +=item Pseudo-hashes work better -=item Calling a second method to simplify things +=item Automatic flushing of output buffers -=item Inheriting the windpipes +=item Better diagnostics on meaningless filehandle operations -=item A few notes about @ISA +=item Where possible, buffered data discarded from duped input filehandle -=item Overriding the methods +=item eof() has the same old magic as <> -=item Starting the search from a different place +=item binmode() can be used to set :crlf and :raw modes -=item The SUPER way of doing things +=item C<-T> filetest recognizes UTF-8 encoded files as "text" -=item Where we're at so far... +=item system(), backticks and pipe open now reflect exec() failure -=item A horse is a horse, of course of course -- or is it? +=item Improved diagnostics -=item Invoking an instance method +=item Diagnostics follow STDERR -=item Accessing the instance data +More consistent close-on-exec behavior -=item How to build a horse +=item syswrite() ease-of-use -=item Inheriting the constructor +=item Better syntax checks on parenthesized unary operators -=item Making a method work with either classes or instances +=item Bit operators support full native integer width -=item Adding parameters to a method +=item Improved security features -=item More interesting instances +More functional bareword prototype (*) -=item A horse of a different color +=item C<require> and C<do> may be overridden -=item Summary +=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 COPYRIGHT +=item Optional Y2K warnings =back -=head2 perltoot - Tom's object-oriented tutorial for perl +=item Modules and Pragmata =over -=item DESCRIPTION +=item Modules -=item Creating a Class +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 Pragmata + +=back + +=item Utility Changes =over -=item Object Representation +=item dprofpp -=item Class Interface +=item find2perl -=item Constructors and Instance Methods +=item h2xs -=item Planning for the Future: Better Constructors +=item perlcc -=item Destructors +=item perldoc -=item Other Object Methods +=item The Perl Debugger =back -=item Class Data +=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 Performance enhancements =over -=item Accessing Class Data +=item Simple sort() using { $a <=> $b } and the like are optimized -=item Debugging Methods +=item Optimized assignments to lexical variables -=item Class Destructors +=item Faster subroutine calls -=item Documenting the Interface +delete(), each(), values() and hash iteration are faster =back -=item Aggregation - -=item Inheritance +=item Installation and Configuration Improvements =over -=item Overridden Methods +=item -Dusethreads means something different -=item Multiple Inheritance +=item New Configure flags -=item UNIVERSAL: The Root of All Objects +=item Threadedness and 64-bitness now more daring -=back +=item Long Doubles -=item Alternate Object Representations +=item -Dusemorebits -=over +=item -Duselargefiles -=item Arrays as Objects +=item installusrbinperl -=item Closures as Objects +=item SOCKS support + +=item C<-A> flag + +=item Enhanced Installation Directories =back -=item AUTOLOAD: Proxy Methods +=item Platform specific changes =over -=item Autoloaded Data Methods +=item Supported platforms -=item Inherited Autoloaded Data Methods +=item DOS + +=item OS390 (OpenEdition MVS) + +=item VMS + +=item Win32 =back -=item Metaclassical Tools +=item Significant bug fixes =over -=item Class::Struct +=item <HANDLE> on empty files -=item Data Members as Variables +=item C<eval '...'> improvements -=item NOTES +=item All compilation errors are true errors -=item Object Terminology +=item Implicitly closed filehandles are safer -=back +=item Behavior of list slices is more consistent -=item SEE ALSO +=item C<(\$)> prototype and C<$foo{a}> -=item AUTHOR AND COPYRIGHT +=item C<goto &sub> and AUTOLOAD -=item COPYRIGHT +=item C<-bareword> allowed under C<use integer> -=over +=item Failures in DESTROY() -=item Acknowledgments +=item Locale bugs fixed -=back +=item Memory leaks + +=item Spurious subroutine stubs after failed subroutine calls + +=item Taint failures under C<-U> + +=item END blocks and the C<-c> switch + +=item Potential to leak DATA filehandles =back -=head2 perltootc - Tom's OO Tutorial for Class Data in Perl +=item New or Changed Diagnostics -=over +(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 DESCRIPTION +=item New tests -=item Class Data as Package Variables +=item Incompatible Changes =over -=item Putting All Your Eggs in One Basket +=item Perl Source Incompatibilities -=item Inheritance Concerns +CHECK is a new keyword, Treatment of list slices of undef has changed -=item The Eponymous Meta-Object +=item Format of $English::PERL_VERSION is different -=item Indirect References to Class Data +Literals of the form C<1.2.3> parse differently, Possibly changed +pseudo-random number generator, Hashing function for hash keys has changed, +C<undef> 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 Monadic Classes +=item Semantics of bit operators may have changed on 64-bit platforms -=item Translucent Attributes +=item More builtins taint their results + +=item C Source Incompatibilities + +C<PERL_POLLUTE>, C<PERL_IMPLICIT_CONTEXT>, C<PERL_POLLUTE_MALLOC> + +=item Compatible C Source API Changes + +C<PATCHLEVEL> is now C<PERL_VERSION> + +=item Binary Incompatibilities =back -=item Class Data as Lexical Variables +=item Known Problems =over -=item Privacy and Responsibility +=item Thread test failures -=item File-Scoped Lexicals +=item EBCDIC platforms not supported -=item More Inheritance Concerns +=item In 64-bit HP-UX the lib/io_multihomed test may hang -=item Locking the Door and Throwing Away the Key +=item NEXTSTEP 3.3 POSIX test failure -=item Translucency Revisited +=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with +gcc + +=item UNICOS/mk CC failures during Configure run + +=item Arrow operator and arrays + +=item Windows 2000 + +=item Experimental features + +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 NOTES +=item Obsolete Diagnostics -=item SEE ALSO +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 "$$<digit>" to mean "${$}<digit>" is deprecated -=item AUTHOR AND COPYRIGHT +=item Reporting Bugs -=item ACKNOWLEDGEMENTS +=item SEE ALSO =item HISTORY =back -=head2 perlobj - Perl objects +=head2 perl56delta, perldelta - what's new for perl v5.6.0 =over =item DESCRIPTION +=item Core Enhancements + =over -=item An Object is Simply a Reference +=item Interpreter cloning, threads, and concurrency -=item A Class is Simply a Package +=item Lexically scoped warning categories -=item A Method is Simply a Subroutine +=item Unicode and UTF-8 support -=item Method Invocation +=item Support for interpolating named characters -=item WARNING +=item "our" declarations -=item Default UNIVERSAL methods +=item Support for strings represented as a vector of ordinals -isa(CLASS), can(METHOD), VERSION( [NEED] ) +=item Improved Perl version numbering system -=item Destructors +=item New syntax for declaring subroutine attributes -=item Summary +=item File and directory handles can be autovivified -=item Two-Phased Garbage Collection +=item open() with more than two arguments -=back +=item 64-bit support -=item SEE ALSO +=item Large file support -=back +=item Long doubles -=head2 perltie - how to hide an object class in a simple variable +=item "more bits" -=over +=item Enhanced support for sort() subroutines -=item SYNOPSIS +=item C<sort $coderef @foo> allowed -=item DESCRIPTION +=item File globbing implemented internally -=over +=item Support for CHECK blocks -=item Tying Scalars +=item POSIX character class syntax [: :] supported -TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this +=item Better pseudo-random number generator -=item Tying Arrays +=item Improved C<qw//> operator -TIEARRAY classname, LIST, FETCH this, index, STORE this, index, value, -DESTROY this +=item Better worst-case behavior of hashes -=item Tying Hashes +=item pack() format 'Z' supported -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 pack() format modifier '!' supported -=item Tying FileHandles +=item pack() and unpack() support counted strings -TIEHANDLE classname, LIST, WRITE this, LIST, PRINT this, LIST, PRINTF this, -LIST, READ this, LIST, READLINE this, GETC this, CLOSE this, DESTROY this +=item Comments in pack() templates -=item The C<untie> Gotcha +=item Weak references -=back +=item Binary numbers supported -=item SEE ALSO +=item Lvalue subroutines -=item BUGS +=item Some arrows may be omitted in calls through references -=item AUTHOR +=item Boolean assignment operators are legal lvalues -=back +=item exists() is supported on subroutine names -=head2 perlbot - Bag'o Object Tricks (the BOT) +=item exists() and delete() are supported on array elements -=over +=item Pseudo-hashes work better -=item DESCRIPTION +=item Automatic flushing of output buffers -=item OO SCALING TIPS +=item Better diagnostics on meaningless filehandle operations -=item INSTANCE VARIABLES +=item Where possible, buffered data discarded from duped input filehandle -=item INSTANCE VARIABLE INHERITANCE +=item eof() has the same old magic as <> -=item OBJECT RELATIONSHIPS +=item binmode() can be used to set :crlf and :raw modes -=item OVERRIDING SUPERCLASS METHODS +=item C<-T> filetest recognizes UTF-8 encoded files as "text" -=item USING RELATIONSHIP WITH SDBM +=item system(), backticks and pipe open now reflect exec() failure -=item THINKING OF CODE REUSE +=item Improved diagnostics -=item CLASS CONTEXT AND THE OBJECT +=item Diagnostics follow STDERR -=item INHERITING A CONSTRUCTOR +=item More consistent close-on-exec behavior -=item DELEGATION +=item syswrite() ease-of-use -=back +=item Better syntax checks on parenthesized unary operators -=head2 perlipc - Perl interprocess communication (signals, fifos, pipes, -safe subprocesses, sockets, and semaphores) +=item Bit operators support full native integer width -=over +=item Improved security features -=item DESCRIPTION +=item More functional bareword prototype (*) -=item Signals +=item C<require> and C<do> may be overridden -=item Named Pipes +=item $^X variables may now have names longer than one character -=over +=item New variable $^C reflects C<-c> switch -=item WARNING +=item New variable $^V contains Perl version as a string + +=item Optional Y2K warnings + +=item Arrays now always interpolate into double-quoted strings =back -=item Using open() for IPC +=item Modules and Pragmata =over -=item Filehandles +=item Modules -=item Background Processes +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 Complete Dissociation of Child from Parent +=item Pragmata -=item Safe Pipe Opens +=back -=item Bidirectional Communication with Another Process +=item Utility Changes -=item Bidirectional Communication with Yourself +=over -=back +=item dprofpp -=item Sockets: Client/Server Communication +=item find2perl -=over +=item h2xs -=item Internet Line Terminators +=item perlcc -=item Internet TCP Clients and Servers +=item perldoc -=item Unix-Domain TCP Clients and Servers +=item The Perl Debugger =back -=item TCP Clients with IO::Socket +=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 Performance enhancements =over -=item A Simple Client +=item Simple sort() using { $a <=> $b } and the like are optimized -C<Proto>, C<PeerAddr>, C<PeerPort> +=item Optimized assignments to lexical variables -=item A Webget Client +=item Faster subroutine calls -=item Interactive Client with IO::Socket +=item delete(), each(), values() and hash iteration are faster =back -=item TCP Servers with IO::Socket +=item Installation and Configuration Improvements -Proto, LocalPort, Listen, Reuse +=over -=item UDP: Message Passing +=item -Dusethreads means something different -=item SysV IPC +=item New Configure flags -=item NOTES +=item Threadedness and 64-bitness now more daring -=item BUGS +=item Long Doubles -=item AUTHOR +=item -Dusemorebits -=item SEE ALSO +=item -Duselargefiles -=back +=item installusrbinperl -=head2 perldbmfilter - Perl DBM Filters +=item SOCKS support -=over +=item C<-A> flag -=item SYNOPSIS +=item Enhanced Installation Directories -=item DESCRIPTION +=back -B<filter_store_key>, B<filter_store_value>, B<filter_fetch_key>, -B<filter_fetch_value> +=item Platform specific changes =over -=item The Filter - -=item An Example -- the NULL termination problem. +=item Supported platforms -=item Another Example -- Key is a C int. +=item DOS -=back +=item OS390 (OpenEdition MVS) -=item SEE ALSO +=item VMS -=item AUTHOR +=item Win32 =back -=head2 perldebug - Perl debugging +=item Significant bug fixes =over -=item DESCRIPTION - -=item The Perl Debugger +=item <HANDLE> on empty files -=over +=item C<eval '...'> improvements -=item Debugger Commands +=item All compilation errors are true errors -h [command], p expr, x expr, V [pkg [vars]], X [vars], T, s [expr], n -[expr], r, <CR>, 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 Implicitly closed filehandles are safer -=item Configurable Options +=item Behavior of list slices is more consistent -C<recallCommand>, C<ShellBang>, C<pager>, C<tkRunning>, C<signalLevel>, -C<warnLevel>, C<dieLevel>, C<AutoTrace>, C<LineInfo>, C<inhibit_exit>, -C<PrintRet>, C<ornaments>, C<frame>, C<maxTraceLen>, C<arrayDepth>, -C<hashDepth>, C<compactDump>, C<veryCompact>, C<globPrint>, C<DumpDBFiles>, -C<DumpPackages>, C<DumpReused>, C<quote>, C<HighBit>, C<undefPrint>, -C<UsageOnly>, C<TTY>, C<noTTY>, C<ReadLine>, C<NonStop> +=item C<(\$)> prototype and C<$foo{a}> -=item Debugger input/output +=item C<goto &sub> and AUTOLOAD -Prompt, Multiline commands, Stack backtrace, Line Listing Format, Frame -listing +=item C<-bareword> allowed under C<use integer> -=item Debugging compile-time statements +=item Failures in DESTROY() -=item Debugger Customization +=item Locale bugs fixed -=item Readline Support +=item Memory leaks -=item Editor Support for Debugging +=item Spurious subroutine stubs after failed subroutine calls -=item The Perl Profiler +=item Taint failures under C<-U> -=back +=item END blocks and the C<-c> switch -=item Debugging regular expressions +=item Potential to leak DATA filehandles -=item Debugging memory usage +=back -=item SEE ALSO +=item New or Changed Diagnostics -=item BUGS +"%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 -=back +=item New tests -=head2 perlnumber - semantics of numbers and numeric operations in Perl +=item Incompatible Changes =over -=item SYNOPSIS - -=item DESCRIPTION +=item Perl Source Incompatibilities -=item Storing numbers +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<undef> 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 Numeric operators and numeric conversions +=item C Source Incompatibilities -=item Flavors of Perl numeric operations +C<PERL_POLLUTE>, C<PERL_IMPLICIT_CONTEXT>, C<PERL_POLLUTE_MALLOC> -Arithmetic operators except, C<no integer>, Arithmetic operators except, -C<use integer>, Bitwise operators, C<no integer>, Bitwise operators, C<use -integer>, Operators which expect an integer, Operators which expect a -string +=item Compatible C Source API Changes -=item AUTHOR +C<PATCHLEVEL> is now C<PERL_VERSION> -=item SEE ALSO +=item Binary Incompatibilities =back -=head2 perldebguts - Guts of Perl debugging +=item Known Problems =over -=item DESCRIPTION +=item Thread test failures -=item Debugger Internals +=item EBCDIC platforms not supported -=over +=item In 64-bit HP-UX the lib/io_multihomed test may hang -=item Writing Your Own Debugger +=item NEXTSTEP 3.3 POSIX test failure -=back +=item Tru64 (aka Digital UNIX, aka DEC OSF/1) lib/sdbm test failure with +gcc -=item Frame Listing Output Examples +=item UNICOS/mk CC failures during Configure run -=item Debugging regular expressions +=item Arrow operator and arrays -=over +=item Experimental features -=item Compile-time output +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 })> -C<anchored> I<STRING> C<at> I<POS>, C<floating> I<STRING> C<at> -I<POS1..POS2>, C<matching floating/anchored>, C<minlen>, C<stclass> -I<TYPE>, C<noscan>, C<isall>, C<GPOS>, C<plus>, C<implicit>, C<with eval>, -C<anchored(TYPE)> +=back -=item Types of nodes +=item Obsolete Diagnostics -=item Run-time output +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 "$$<digit>" +to mean "${$}<digit>" is deprecated + +=item Reporting Bugs + +=item SEE ALSO + +=item HISTORY =back -=item Debugging Perl memory usage +=head2 perl5005delta, perldelta - what's new for perl5.005 =over -=item Using C<$ENV{PERL_DEBUG_MSTATS}> +=item DESCRIPTION -C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>, Free/Used, C<Total sbrk(): -SBRKed/SBRKs:CONTINUOUS>, C<pad: 0>, C<heads: 2192>, C<chain: 0>, C<tail: -6144> +=item About the new versioning system -=item Example of using B<-DL> switch +=item Incompatible Changes -C<717>, C<002>, C<054>, C<602>, C<702>, C<704> +=over -=item B<-DL> details +=item WARNING: This version is not binary compatible with Perl 5.004. -C<!!!>, C<!!>, C<!> +=item Default installation structure has changed -=item Limitations of B<-DL> statistics +=item Perl Source Compatibility -=back +=item C Source Compatibility -=item SEE ALSO +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 -=back +=item Binary Compatibility -=head2 perldiag - various Perl diagnostics +=item Security fixes may affect compatibility -=over +=item Relaxed new mandatory warnings introduced in 5.004 -=item DESCRIPTION +=item Licensing =back -=head2 perlsec - Perl security +=item Core Changes =over -=item DESCRIPTION +=item Threads -=over +=item Compiler -=item Laundering and Detecting Tainted Data +=item Regular Expressions -=item Switches On the "#!" Line +Many new and improved optimizations, Many bug fixes, New regular expression +constructs, New operator for precompiled regular expressions, Other +improvements, Incompatible changes -=item Cleaning Up Your Path +=item Improved malloc() -=item Security Bugs +=item Quicksort is internally implemented -=item Protecting Your Programs +=item Reliable signals -=back +=item Reliable stack pointers -=item SEE ALSO +=item More generous treatment of carriage returns -=back +=item Memory leaks -=head2 perltrap - Perl traps for the unwary +=item Better support for multiple interpreters -=over +=item Behavior of local() on array and hash elements is now well-defined -=item DESCRIPTION +=item C<%!> is transparently tied to the L<Errno> module -=over +=item Pseudo-hashes are supported -=item Awk Traps +=item C<EXPR foreach EXPR> is supported -=item C Traps +=item Keywords can be globally overridden -=item Sed Traps +=item C<$^E> is meaningful on Win32 -=item Shell Traps +=item C<foreach (1..1000000)> optimized -=item Perl Traps +=item C<Foo::> can be used as implicitly quoted package name -=item Perl4 to Perl5 Traps +=item C<exists $Foo::{Bar::}> tests existence of a package -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 Better locale support -=item Discontinuance, Deprecation, and BugFix traps +=item Experimental support for 64-bit platforms -Discontinuance, Deprecation, BugFix, Discontinuance, Discontinuance, -Discontinuance, BugFix, Discontinuance, Discontinuance, BugFix, -Discontinuance, Deprecation, Discontinuance, Discontinuance +=item prototype() returns useful results on builtins -=item Parsing Traps +=item Extended support for exception handling -Parsing, Parsing, Parsing, Parsing +=item Re-blessing in DESTROY() supported for chaining DESTROY() methods -=item Numerical Traps +=item All C<printf> format conversions are handled internally -Numerical, Numerical, Numerical, Bitwise string ops +=item New C<INIT> keyword -=item General data type traps +=item New C<lock> keyword -(Arrays), (Arrays), (Hashes), (Globs), (Globs), (Scalar String), -(Constants), (Scalars), (Variable Suicide) +=item New C<qr//> operator -=item Context Traps - scalar, list contexts +=item C<our> is now a reserved word -(list context), (scalar context), (scalar context), (list, builtin) +=item Tied arrays are now fully supported -=item Precedence Traps +=item Tied handles support is better -Precedence, Precedence, Precedence, Precedence, Precedence, Precedence, -Precedence +=item 4th argument to substr -=item General Regular Expression Traps using s///, etc. +=item Negative LENGTH argument to splice -Regular Expression, Regular Expression, Regular Expression, Regular -Expression, Regular Expression, Regular Expression, Regular Expression, -Regular Expression +=item Magic lvalues are now more magical -=item Subroutine, Signal, Sorting Traps +=item <> now reads in records -(Signals), (Sort Subroutine), warn() won't let you specify a filehandle +=back -=item OS Traps +=item Supported Platforms -(SysV), (SysV) +=over -=item Interpolation Traps +=item New Platforms -Interpolation, Interpolation, Interpolation, Interpolation, Interpolation, -Interpolation, Interpolation, Interpolation, Interpolation +=item Changes in existing support -=item DBM Traps +=back -DBM, DBM +=item Modules and Pragmata -=item Unclassified Traps +=over -C<require>/C<do> trap using returned value, C<split> on empty string with -LIMIT specified +=item New Modules + +B, Data::Dumper, Dumpvalue, Errno, File::Spec, ExtUtils::Installed, +ExtUtils::Packlist, Fatal, IPC::SysV, Test, Tie::Array, Tie::Handle, +Thread, attrs, fields, re + +=item Changes in existing modules + +Benchmark, Carp, CGI, Fcntl, Math::Complex, Math::Trig, POSIX, DB_File, +MakeMaker, CPAN, Cwd, Benchmark =back +=item Utility Changes + +=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 + +=item Obsolete Diagnostics + +Can't mktemp(), Can't write to temp file for B<-e>: %s, Cannot open +temporary file, regexp too big + +=item Configuration Changes + +=item BUGS + +=item SEE ALSO + +=item HISTORY + =back -=head2 perlport - Writing portable Perl +=head2 perl5004delta, perldelta - what's new for perl5.004 =over =item DESCRIPTION -Not all Perl programs have to be portable, Nearly all of Perl already I<is> -portable +=item Supported Environments -=item ISSUES +=item Core Changes =over -=item Newlines +=item List assignment to %ENV works -=item Numbers endianness and Width +=item "Can't locate Foo.pm in @INC" error now lists @INC -=item Files and Filesystems +=item Compilation option: Binary compatibility with 5.003 -=item System Interaction +=item $PERL5OPT environment variable -=item Interprocess Communication (IPC) +=item Limitations on B<-M>, B<-m>, and B<-T> options -=item External Subroutines (XS) +=item More precise warnings -=item Standard Modules +=item Deprecated: Inherited C<AUTOLOAD> for non-methods -=item Time and Date +=item Previously deprecated %OVERLOAD is no longer usable -=item Character sets and character encoding +=item Subroutine arguments created only when they're modified -=item Internationalisation +=item Group vector changeable with C<$)> -=item System Resources +=item Fixed parsing of $$<digit>, &$<digit>, etc. -=item Security +=item Fixed localization of $<digit>, $&, etc. -=item Style +=item No resetting of $. on implicit close -=back +=item C<wantarray> may return undef -=item CPAN Testers +=item C<eval EXPR> determines value of EXPR in scalar context -Mailing list: cpan-testers@perl.org, Testing results: -http://testers.cpan.org/ +=item Changes to tainting checks -=item PLATFORMS +No glob() or <*>, No spawning if tainted $CDPATH, $ENV, $BASH_ENV, No +spawning if tainted $TERM doesn't look like a terminal name -=over +=item New Opcode module and revised Safe module -=item Unix +=item Embedding improvements -=item DOS and Derivatives +=item Internal change: FileHandle class based on IO::* classes -Build instructions for OS/2, L<perlos2> +=item Internal change: PerlIO abstraction interface -=item S<Mac OS> +=item New and changed syntax -=item VMS +$coderef->(PARAMS) -=item VOS +=item New and changed builtin constants -=item EBCDIC Platforms +__PACKAGE__ -=item Acorn RISC OS +=item New and changed builtin variables -=item Other perls +$^E, $^H, $^M -=back +=item New and changed builtin functions -=item FUNCTION IMPLEMENTATIONS +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<m//gc> does not +reset search position on failure, C<m//x> ignores whitespace before ?*+{}, +nested C<sub{}> closures work now, formats work right on changing lexicals -=over +=item New builtin methods -=item Alphabetical Listing of Perl Functions +isa(CLASS), can(METHOD), VERSION( [NEED] ) --I<X> FILEHANDLE, -I<X> EXPR, -I<X>, 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 TIEHANDLE now supported + +TIEHANDLE classname, LIST, PRINT this, LIST, PRINTF this, LIST, READ this +LIST, READLINE this, GETC this, DESTROY this + +=item Malloc enhancements + +-DPERL_EMERGENCY_SBRK, -DPACK_MALLOC, -DTWO_POT_OPTIMIZE + +=item Miscellaneous efficiency enhancements =back -=item CHANGES +=item Support for More Operating Systems -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 +=over -=item Supported Platforms +=item Win32 -=item SEE ALSO +=item Plan 9 -=item AUTHORS / CONTRIBUTORS +=item QNX -=item VERSION +=item AmigaOS =back -=head2 perlstyle - Perl style guide +=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 DESCRIPTION +=item Required Updates + +=item Installation directories + +=item Module information summary + +=item Fcntl + +=item IO + +=item Math::Complex + +=item Math::Trig + +=item DB_File + +=item Net::Ping + +=item Object-oriented overrides for builtin operators =back -=head2 perlpod - plain old documentation +=item Utility Changes =over -=item DESCRIPTION +=item pod2html -=over +Sends converted HTML to standard output -=item Verbatim Paragraph +=item xsubpp -=item Command Paragraph +C<void> XSUBs now default to returning nothing -=item Ordinary Block of Text +=back -=item The Intent +=item C Language API Changes -=item Embedding Pods in Perl Modules +C<gv_fetchmethod> and C<perl_call_sv>, C<perl_eval_pv>, Extended API for +manipulating hashes -=item Common Pod Pitfalls +=item Documentation Changes -=back +L<perldelta>, L<perlfaq>, L<perllocale>, L<perltoot>, L<perlapio>, +L<perlmodlib>, L<perldebug>, L<perlsec> + +=item New Diagnostics + +"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 "$$<digit>" to +mean "${$}<digit>" 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 + +=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<Use C from Perl?>, B<Use a Unix program from Perl?>, B<Use Perl from -Perl?>, B<Use C from C?>, B<Use Perl from C?> +B<Unix emulation for AmigaOS: ixemul.library>, B<Version of Amiga OS> -=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<HTML> -=item Using Perl modules, which themselves use C libraries, from your C -program +=item B<GNU> C<info> files + +=item C<LaTeX> 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<PerlIO *>, B<PerlIO_stdin()>, B<PerlIO_stdout()>, B<PerlIO_stderr()>, -B<PerlIO_open(path, mode)>, B<PerlIO_fdopen(fd,mode)>, -B<PerlIO_printf(f,fmt,...)>, B<PerlIO_vprintf(f,fmt,a)>, -B<PerlIO_stdoutf(fmt,...)>, B<PerlIO_read(f,buf,count)>, -B<PerlIO_write(f,buf,count)>, B<PerlIO_close(f)>, B<PerlIO_puts(f,s)>, -B<PerlIO_putc(f,c)>, B<PerlIO_ungetc(f,c)>, B<PerlIO_getc(f)>, -B<PerlIO_eof(f)>, B<PerlIO_error(f)>, B<PerlIO_fileno(f)>, -B<PerlIO_clearerr(f)>, B<PerlIO_flush(f)>, B<PerlIO_tell(f)>, -B<PerlIO_seek(f,o,w)>, B<PerlIO_getpos(f,p)>, B<PerlIO_setpos(f,p)>, -B<PerlIO_rewind(f)>, B<PerlIO_tmpfile()> +=item PREREQUISITES =over -=item Co-existence with stdio +=item Cygwin = GNU+Cygnus+Windows (Don't leave UNIX without it) -B<PerlIO_importFILE(f,flags)>, B<PerlIO_exportFILE(f,flags)>, -B<PerlIO_findFILE(f)>, B<PerlIO_releaseFILE(p,f)>, B<PerlIO_setlinebuf(f)>, -B<PerlIO_has_cntptr(f)>, B<PerlIO_get_ptr(f)>, B<PerlIO_get_cnt(f)>, -B<PerlIO_canset_cnt(f)>, B<PerlIO_fast_gets(f)>, -B<PerlIO_set_ptrcnt(f,p,c)>, B<PerlIO_set_cnt(f,c)>, B<PerlIO_has_base(f)>, -B<PerlIO_get_base(f)>, B<PerlIO_get_bufsiz(f)> +=item Cygwin Configuration -=back +C<PATH>, I<nroff>, 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<use GDBM_File>), C<-ldb> (C<use DB_File>), +C<-lcygipc> (C<use IPC::SysV>) -=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<dlsym()>, Win9x and C<d_eofnblk>, 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 Compiling Perl 5 on HP-UX -=item Version caveat +=item PA-RISC -=item Dynamic Loading versus Static Loading +=item PA-RISC 1.0 -=back +=item PA-RISC 1.1 -=item TUTORIAL +=item PA-RISC 2.0 -=over +=item Portability Between PA-RISC Versions -=item EXAMPLE 1 - -=item EXAMPLE 2 +=item Building Dynamic Extensions on HP-UX -=item What has gone on? +=item The HP ANSI C Compiler -=item Writing good test scripts +=item Using Large Files with Perl -=item EXAMPLE 3 +=item Threaded Perl -=item What's new here? +=item 64-bit Perl -=item Input and Output Parameters +=item GDBM and Threads -=item The XSUBPP Program +=item NFS filesystems and utime(2) -=item The TYPEMAP file +=back -=item Warning about Output Arguments +=item AUTHOR -=item EXAMPLE 4 +=item DATE -=item What has happened here? +=back -=item Anatomy of .xs file +=head2 perlmachten, README.machten - Perl version 5 on Power MachTen +systems -=item Getting the fat out of XSUBs +=over -=item More about XSUB arguments +=item DESCRIPTION -=item The Argument Stack +=over -=item Extending your Extension +=item Compiling Perl 5 on MachTen -=item Documenting your Extension +=item Failures during C<make test> -=item Installing your Extension +op/lexassign.t, pragma/warnings.t -=item EXAMPLE 5 +=item Building external modules -=item New Things in this Example +=back -=item EXAMPLE 6 +=item AUTHOR -=item New Things in this Example +=item DATE -=item EXAMPLE 7 (Coming Soon) +=back -=item EXAMPLE 8 (Coming Soon) +=head2 perlos2 - Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT. -=item EXAMPLE 9 (Coming Soon) +=over -=item Troubleshooting these Examples +=item SYNOPSIS =back -=item See also +=over -=item Author +=item Target -=over +=item Other OSes -=item Last Changed +=item Prerequisites -=back +EMX, RSX, HPFS, pdksh + +=item Starting Perl programs under OS/2 (and DOS and...) + +=item Starting OS/2 (and DOS) programs under Perl =back -=head2 perlguts - Introduction to the Perl API +=over + +=item Frequently asked questions =over -=item DESCRIPTION +=item I cannot run external programs -=item Variables +=item I cannot embed perl into my program, or use F<perl.dll> from my +program. -=over +Is your program EMX-compiled with C<-Zmt -Zcrtdll>?, Did you use +L<ExtUtils::Embed>? -=item Datatypes +=item C<``> and pipe-C<open> do not work under DOS. -=item What is an "IV"? +=item Cannot start C<find.exe "pattern" file> -=item Working with SVs +=back -=item What's Really Stored in an SV? +=item INSTALLATION -=item Working with AVs +=over -=item Working with HVs +=item Automatic binary installation -=item Hash API Extensions +C<PERL_BADLANG>, C<PERL_BADFREE>, F<Config.pm> -=item References +=item Manual binary installation -=item Blessed References and Class Objects +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 -=item Creating New Variables +=item B<Warning> -=item Reference Counts and Mortality +=back -=item Stashes and Globs +=item Accessing documentation -=item Double-Typed SVs +=over -=item Magic Variables +=item OS/2 F<.INF> file -=item Assigning Magic +=item Plain text -=item Magic Virtual Tables +=item Manpages -=item Finding Magic +=item HTML -=item Understanding the Magic of Tied Hashes and Arrays +=item GNU C<info> files -=item Localizing changes +=item F<.PDF> files -C<SAVEINT(int i)>, C<SAVEIV(IV i)>, C<SAVEI32(I32 i)>, C<SAVELONG(long i)>, -C<SAVESPTR(s)>, C<SAVEPPTR(p)>, C<SAVEFREESV(SV *sv)>, C<SAVEFREEOP(OP -*op)>, C<SAVEFREEPV(p)>, C<SAVECLEARSV(SV *sv)>, C<SAVEDELETE(HV *hv, char -*key, I32 length)>, C<SAVEDESTRUCTOR(DESTRUCTORFUNC_NOCONTEXT_t f, void -*p)>, C<SAVEDESTRUCTOR_X(DESTRUCTORFUNC_t f, void *p)>, C<SAVESTACK_POS()>, -C<SV* save_scalar(GV *gv)>, C<AV* save_ary(GV *gv)>, C<HV* save_hash(GV -*gv)>, C<void save_item(SV *item)>, C<void save_list(SV **sarg, I32 -maxsarg)>, C<SV* save_svref(SV **sptr)>, C<void save_aptr(AV **aptr)>, -C<void save_hptr(HV **hptr)> +=item C<LaTeX> docs =back -=item Subroutines +=item BUILD =over -=item XSUBs and the Argument Stack +=item Prerequisites -=item Calling Perl Routines from within C Programs +=item Getting perl source -=item Memory Allocation +=item Application of the patches -=item PerlIO +=item Hand-editing -=item Putting a C value on Perl stack +=item Making -=item Scratchpads +=item Testing -=item Scratchpads and recursion +A lot of C<bad free>, Process terminated by SIGTERM/SIGINT, F<op/fs.t>, +F<lib/io_pipe.t>, F<lib/io_sock.t>, F<op/stat.t>, F<lib/io_udp.t> + +=item Installing the built perl + +=item C<a.out>-style build =back -=item Compiled code +=item Build FAQ =over -=item Code tree +=item Some C</> became C<\> in pdksh. -=item Examining the tree +=item C<'errno'> - unresolved external -=item Compile pass 1: check routines +=item Problems with tr or sed -=item Compile pass 1a: constant folding +=item Some problem (forget which ;-) -=item Compile pass 2: context propagation +=item Library ... not found -=item Compile pass 3: peephole optimization +=item Segfault in make =back -=item How multiple interpreters and concurrency are supported +=item Specific (mis)features of OS/2 port =over -=item Background and PERL_IMPLICIT_CONTEXT - -=item How do I use all this in extensions? - -=item Future Plans and PERL_IMPLICIT_SYS - -=back +=item C<setpriority>, C<getpriority> -=item AUTHORS +=item C<system()> -=item SEE ALSO +=item C<extproc> on the first line -=back +=item Additional modules: -=head2 perlcall - Perl calling conventions from C +=item Prebuilt methods: -=over +C<File::Copy::syscopy>, C<DynaLoader::mod2fname>, C<Cwd::current_drive()>, + C<Cwd::sys_chdir(name)>, C<Cwd::change_drive(name)>, +C<Cwd::sys_is_absolute(name)>, C<Cwd::sys_is_rooted(name)>, +C<Cwd::sys_is_relative(name)>, C<Cwd::sys_cwd(name)>, +C<Cwd::sys_abspath(name, dir)>, C<Cwd::extLibpath([type])>, +C<Cwd::extLibpath_set( path [, type ] )> -=item DESCRIPTION +=item Misfeatures -An Error Handler, An Event Driven Program +=item Modifications -=item THE CALL_ FUNCTIONS +C<popen>, C<tmpnam>, C<tmpfile>, C<ctermid>, C<stat>, C<flock> -call_sv, call_pv, call_method, call_argv +=back -=item FLAG VALUES +=item Perl flavors =over -=item G_VOID +=item F<perl.exe> -=item G_SCALAR +=item F<perl_.exe> -=item G_ARRAY +=item F<perl__.exe> -=item G_DISCARD +=item F<perl___.exe> -=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<PERLLIB_PREFIX> -=item Passing Parameters +=item C<PERL_BADLANG> -=item Returning a Scalar +=item C<PERL_BADFREE> -=item Returning a list of values +=item C<PERL_SH_DIR> -=item Returning a list in a scalar context +=item C<USE_PERL_FLOCK> -=item Returning Data from Perl via the parameter list +=item C<TMP> or C<TEMP> -=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<COND_WAIT>, F<os2.c> -=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<internal> - 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<type>_ATTRIBUTES, MODIFY_I<type>_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 @@ -4290,22 +6596,6 @@ integer, float, binary, q, qr =back -=head2 pwent - Perl pragma to control the pwent functions - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=over - -=item subpragma shadow_password - -=back - -=back - =head2 re - Perl pragma to alter regular expression behaviour =over @@ -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<name()>, B<value()>, B<domain()>, B<path()>, B<expires()> =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 @@ -7607,6 +9917,239 @@ locale =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 HISTORY + +=back + +=head2 IO::Handle - supply object methods for I/O handles + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new (), new_from_fd ( FD, MODE ) + +=item METHODS + +$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 NOTE + +=item SEE ALSO + +=item BUGS + +=item HISTORY + +=back + +=head2 IO::Pipe - supply object methods for pipes + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( [READER, WRITER] ) + +=item METHODS + +reader ([ARGS]), writer ([ARGS]), handles () + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::Poll - Object interface to system poll call + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item METHODS + +mask ( IO [, EVENT_MASK ] ), poll ( [ TIMEOUT ] ), events ( IO ), remove ( +IO ), handles( [ EVENT_MASK ] ) + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::Seekable - supply seek based methods for I/O objects + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item SEE ALSO + +=item HISTORY + +=back + +=head2 IO::Select - OO interface to the select system call + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( [ HANDLES ] ) + +=item METHODS + +add ( HANDLES ), remove ( HANDLES ), exists ( HANDLE ), handles, can_read ( +[ TIMEOUT ] ), can_write ( [ TIMEOUT ] ), has_exception ( [ TIMEOUT ] ), +count (), bits(), select ( READ, WRITE, ERROR [, TIMEOUT ] ) + +=item EXAMPLE + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::Socket - Object interface to socket communications + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( [ARGS] ) + +=item METHODS + +accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), timeout([VAL]), +sockopt(OPT [, VAL]), sockdomain, socktype, protocol, connected + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::Socket::INET - Object interface for AF_INET domain sockets + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( [ARGS] ) + +=over + +=item METHODS + +sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost +() + +=back + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + +=head2 IO::Socket::UNIX - Object interface for AF_UNIX domain sockets + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=item CONSTRUCTOR + +new ( [ARGS] ) + +=item METHODS + +hostpath(), peerpath() + +=item SEE ALSO + +=item AUTHOR + +=item COPYRIGHT + +=back + =head2 IO::lib::IO::Dir, IO::Dir - supply object methods for directory handles @@ -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 @@ -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) { @@ -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)); @@ -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 @@ -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<SvCUR>. #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 d2f1300690..6e25310734 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'; @@ -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 @@ -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; +} @@ -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 d669516974..f5ee4c6482 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 6e336169bc..60777fa36f 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; |