diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-04-09 00:00:00 +0000 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-04-09 00:00:00 +0000 |
commit | 7a2e2cd6e4407ff4fe23355f0373307425305867 (patch) | |
tree | b8bac221ca9fae30bb25f4d8ac3ae8f8d5a1b483 | |
parent | fa85963645b525b23ccb5a91ab9199c740773c41 (diff) | |
download | perl-7a2e2cd6e4407ff4fe23355f0373307425305867.tar.gz |
[inseparable changes from match from perl-5.003_97c to perl-5.003_97d]perl-5.003_97d
DOCUMENTATION
Subject: more (err, less) doubled words
Date: Fri, 11 Apr 1997 22:31:25 +0300 (EET DST)
From: Jarkko Hietaniemi <Jarkko.Hietaniemi@cc.hut.fi>
Files: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/IO/lib/IO/Pipe.pm lib/CGI.pm lib/Exporter.pm lib/ExtUtils/MakeMaker.pm lib/IPC/Open2.pm lib/IPC/Open3.pm lib/vars.pm pod/perlcall.pod pod/perldiag.pod pod/perlfaq1.pod pod/perlfaq3.pod pod/perlfaq5.pod pod/perlfaq7.pod pod/perlfaq8.pod pod/perlipc.pod
private-msgid: 199704111931.WAA24460@alpha.hut.fi
LIBRARY AND EXTENSIONS
Subject: win32: perl5db patch
Date: Thu, 10 Apr 1997 17:42:13 -0400
From: Gurusamy Sarathy <gsar@engin.umich.edu>
Files: lib/perl5db.pl
Msg-ID: 199704102142.RAA27396@aatma.engin.umich.edu
(applied based on p5p patch as commit 56cbacacb6c634a626b06407cbd555bc1519a2d5)
Subject: Enhancements to debugger, Term::ReadLine, Term::Cap
Date: Thu, 10 Apr 1997 15:48:07 -0400 (EDT)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: lib/Term/Cap.pm lib/Term/ReadLine.pm lib/perl5db.pl
Msg-ID: 199704101948.PAA01841@monk.mps.ohio-state.edu
(applied based on p5p patch as commit 6fb2d361298c4eb5d42f1f63b0f74a60d407e546)
OTHER CORE CHANGES
Subject: New error msg for low-key failure of C<require>
From: Chip Salzenberg <chip@perl.com>
Files: pod/perldiag.pod pp_ctl.c t/pragma/strict-subs t/pragma/strict-vars
-rw-r--r-- | Changes | 135 | ||||
-rw-r--r-- | ext/DB_File/DB_File.pm | 14 | ||||
-rw-r--r-- | ext/DynaLoader/DynaLoader.pm | 13 | ||||
-rw-r--r-- | ext/IO/lib/IO/Pipe.pm | 12 | ||||
-rw-r--r-- | lib/CGI.pm | 10 | ||||
-rw-r--r-- | lib/Exporter.pm | 2 | ||||
-rw-r--r-- | lib/ExtUtils/MakeMaker.pm | 2 | ||||
-rw-r--r-- | lib/IPC/Open2.pm | 6 | ||||
-rw-r--r-- | lib/IPC/Open3.pm | 2 | ||||
-rw-r--r-- | lib/Term/Cap.pm | 7 | ||||
-rw-r--r-- | lib/Term/ReadLine.pm | 46 | ||||
-rw-r--r-- | lib/perl5db.pl | 19 | ||||
-rw-r--r-- | lib/vars.pm | 13 | ||||
-rw-r--r-- | patchlevel.h | 1 | ||||
-rw-r--r-- | pod/perlcall.pod | 2 | ||||
-rw-r--r-- | pod/perldiag.pod | 8 | ||||
-rw-r--r-- | pod/perlfaq1.pod | 2 | ||||
-rw-r--r-- | pod/perlfaq3.pod | 2 | ||||
-rw-r--r-- | pod/perlfaq5.pod | 4 | ||||
-rw-r--r-- | pod/perlfaq7.pod | 6 | ||||
-rw-r--r-- | pod/perlfaq8.pod | 2 | ||||
-rw-r--r-- | pod/perlipc.pod | 2 | ||||
-rw-r--r-- | pod/perltoc.pod | 4 | ||||
-rw-r--r-- | pp_ctl.c | 12 | ||||
-rw-r--r-- | t/pragma/strict-subs | 4 | ||||
-rw-r--r-- | t/pragma/strict-vars | 4 |
26 files changed, 268 insertions, 66 deletions
@@ -46,6 +46,141 @@ And the Keepers of the Patch Pumpkin: ------------------- + Version 5.003_97d +------------------- + +Any minute now... second public beta... no, really... + + CORE LANGUAGE CHANGES + + Title: "Fix for incorrect overloaded assignment" + From: Ilya Zakharevich + Msg-ID: <199704112225.SAA03482@monk.mps.ohio-state.edu> + Date: Fri, 11 Apr 1997 18:25:33 -0400 (EDT) + Files: gv.c + + Title: "Fix C< $x=''; pos($x)=0; $x=~/\G$/ >" + From: Chip Salzenberg + Files: pp_hot.c + + Title: "Fix label on C<for(;;)> statement" + From: Chip Salzenberg + Files: perly.c perly.y + + CORE PORTABILITY + + Title: "update to 5.003_97b/hint/irix_6_2.sh" + From: Scott Henry <scotth@sgi.com> + Msg-ID: <yd8hghdjbk0.fsf@hoshi.engr.sgi.com> + Date: 11 Apr 1997 18:05:03 -0700 + Files: hints/irix_6_2.sh + + OTHER CORE CHANGES + + Title: "Before 'BEGIN not safe', explain why" + From: Chip Salzenberg + Files: op.c + + Title: "New error msg for low-key failure of C<require>" + From: Chip Salzenberg + Files: pod/perldiag.pod pp_ctl.c t/pragma/strict-subs + t/pragma/strict-vars + + Title: "Put "dXSUB_SYS" last in declarations" + From: Chip Salzenberg + Files: win32/perllib.c + + Title: "Minor type cleanup" + From: Chip Salzenberg + Files: proto.h toke.c + + BUILD PROCESS + + (no changes) + + LIBRARY AND EXTENSIONS + + Title: "win32: perl5db patch" + From: Gurusamy Sarathy + Msg-ID: <199704102142.RAA27396@aatma.engin.umich.edu> + Date: Thu, 10 Apr 1997 17:42:13 -0400 + Files: lib/perl5db.pl + + Title: "Enhancements to debugger, Term::ReadLine, Term::Cap" + From: Ilya Zakharevich + Msg-ID: <199704101948.PAA01841@monk.mps.ohio-state.edu> + Date: Thu, 10 Apr 1997 15:48:07 -0400 (EDT) + Files: lib/Term/Cap.pm lib/Term/ReadLine.pm lib/perl5db.pl + + Title: "MM_Unix patch for use under CVS" + From: Ulrich Pfeifer + Msg-ID: <yfmd8s1vhpn.fsf@ls6.informatik.uni-dortmund.de> + Date: 11 Apr 1997 14:59:00 +0200 + Files: lib/ExtUtils/MM_Unix.pm + + Title: "Complex update (five patches)" + From: Jarkko Hietaniemi + Files: lib/Math/Complex.pm t/lib/complex.t + + Title: "Fix undef warning in Math::BigInt" + From: Chip Salzenberg + Files: lib/Math/BigInt.pm + + TESTS + + (no other changes) + + UTILITIES + + Title: "Add B<-o> option to a2p, for old awk; make new the default" + From: Chip Salzenberg + Files: x2p/a2p.h x2p/a2p.pod x2p/a2py.c x2p/walk.c + + DOCUMENTATION + + Title: "typo in lib/diagnostics.pm" + From: barnett@grymoire.crd.ge.com (Bruce Barnett) + Msg-ID: <199704111800.OAA27297@grymoire.crd.ge.com> + Date: Fri, 11 Apr 1997 14:00:54 -0400 + Files: lib/diagnostics.pm + + Title: "Use B<> for options in Class::Struct pod" + From: Hugo van der Sanden <hv@iii.co.uk> + Msg-ID: <334D2E7B.67F0@iii.co.uk> + Date: Thu, 10 Apr 1997 19:16:27 +0100 + Files: lib/Class/Struct.pm + + Title: "Explain //g and \G issues" + From: Gurusamy Sarathy + Msg-ID: <199704122048.QAA25060@aatma.engin.umich.edu> + Date: Sat, 12 Apr 1997 16:48:41 -0400 + Files: pod/perldelta.pod pod/perlop.pod pod/perlre.pod + + Title: "more (err, less) doubled words" + From: Jarkko Hietaniemi + Msg-ID: <199704111931.WAA24460@alpha.hut.fi> + Date: Fri, 11 Apr 1997 22:31:25 +0300 (EET DST) + Files: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm + ext/IO/lib/IO/Pipe.pm lib/CGI.pm lib/Exporter.pm + lib/ExtUtils/MakeMaker.pm lib/IPC/Open2.pm lib/IPC/Open3.pm + lib/vars.pm pod/perlcall.pod pod/perldiag.pod + pod/perlfaq1.pod pod/perlfaq3.pod pod/perlfaq5.pod + pod/perlfaq7.pod pod/perlfaq8.pod pod/perlipc.pod + + Title: "Freudian slip error in perlsub.pod" + From: barnett@grymoire.crd.ge.com (Bruce Barnett) + Msg-ID: <199704111755.NAA27200@grymoire.crd.ge.com> + Date: Fri, 11 Apr 1997 13:55:07 -0400 + Files: pod/perlsub.pod + + Title: "Little patch for perl5.003_97c/pod/perlpod.pod" + From: rse@engelschall.com (Ralf S. Engelschall) + Msg-ID: <199704112048.WAA08733@en1.engelschall.com> + Date: Fri, 11 Apr 1997 22:48:37 +0200 + Files: pod/perlpod.pod + + +------------------- Version 5.003_97c ------------------- diff --git a/ext/DB_File/DB_File.pm b/ext/DB_File/DB_File.pm index 3b6edd4fc7..5a88228cf0 100644 --- a/ext/DB_File/DB_File.pm +++ b/ext/DB_File/DB_File.pm @@ -282,8 +282,6 @@ sub get_dup 1; __END__ -=cut - =head1 NAME DB_File - Perl5 access to Berkeley DB @@ -772,11 +770,11 @@ with the key, C<$key>. In list context, it returns all the values which match C<$key>. Note that the values will be returned in an apparently random order. -In list context, if the second parameter is present and evaluates TRUE, -the method returns an associative array. The keys of the associative -array correspond to the the values that matched in the BTREE and the -values of the array are a count of the number of times that particular -value occurred in the BTREE. +In list context, if the second parameter is present and evaluates +TRUE, the method returns an associative array. The keys of the +associative array correspond to the values that matched in the BTREE +and the values of the array are a count of the number of times that +particular value occurred in the BTREE. So assuming the database created above, we can use C<get_dup> like this: @@ -1397,7 +1395,7 @@ F<authors/id/TOMC/scripts/nshist.gz>). =head2 The untie() Gotcha -If you make use of the Berkeley DB API, it is is I<very> strongly +If you make use of the Berkeley DB API, it is I<very> strongly recommended that you read L<perltie/The untie Gotcha>. Even if you don't currently make use of the API interface, it is still diff --git a/ext/DynaLoader/DynaLoader.pm b/ext/DynaLoader/DynaLoader.pm index 84881448c7..67043102a5 100644 --- a/ext/DynaLoader/DynaLoader.pm +++ b/ext/DynaLoader/DynaLoader.pm @@ -393,12 +393,13 @@ used to resolve any undefined symbols that might be generated by a later call to load_file(). This is only required on some platforms which do not handle dependent -libraries automatically. For example the Socket Perl extension library -(F<auto/Socket/Socket.so>) contains references to many socket functions -which need to be resolved when it's loaded. Most platforms will -automatically know where to find the 'dependent' library (e.g., -F</usr/lib/libsocket.so>). A few platforms need to to be told the location -of the dependent library explicitly. Use @dl_resolve_using for this. +libraries automatically. For example the Socket Perl extension +library (F<auto/Socket/Socket.so>) contains references to many socket +functions which need to be resolved when it's loaded. Most platforms +will automatically know where to find the 'dependent' library (e.g., +F</usr/lib/libsocket.so>). A few platforms need to be told the +location of the dependent library explicitly. Use @dl_resolve_using +for this. Example usage: diff --git a/ext/IO/lib/IO/Pipe.pm b/ext/IO/lib/IO/Pipe.pm index 1768a4afed..ae6d9a547e 100644 --- a/ext/IO/lib/IO/Pipe.pm +++ b/ext/IO/lib/IO/Pipe.pm @@ -186,12 +186,12 @@ processes. =item new ( [READER, WRITER] ) -Creates a C<IO::Pipe>, which is a reference to a -newly created symbol (see the C<Symbol> package). C<IO::Pipe::new> -optionally takes two arguments, which should be objects blessed into -C<IO::Handle>, or a subclass thereof. These two objects will be used -for the system call to C<pipe>. If no arguments are given then then -method C<handles> is called on the new C<IO::Pipe> object. +Creates a C<IO::Pipe>, which is a reference to a newly created symbol +(see the C<Symbol> package). C<IO::Pipe::new> optionally takes two +arguments, which should be objects blessed into C<IO::Handle>, or a +subclass thereof. These two objects will be used for the system call +to C<pipe>. If no arguments are given then method C<handles> is called +on the new C<IO::Pipe> object. These two handles are held in the array part of the GLOB until either C<reader> or C<writer> is called. diff --git a/lib/CGI.pm b/lib/CGI.pm index 0c869d7262..28fe43b2f1 100644 --- a/lib/CGI.pm +++ b/lib/CGI.pm @@ -3143,7 +3143,7 @@ produce both the unofficial Location: header and the official URI: header. This should satisfy most servers and browsers. One hint I can offer is that relative links may not work correctly -when when you generate a redirection to another document on your site. +when you generate a redirection to another document on your site. This is due to a well-intentioned optimization that some servers use. The solution to this is to use the full URL (including the http: part) of the document you are redirecting to. @@ -3793,7 +3793,7 @@ list. Otherwise, they will be strung together on a horizontal line. =item 4. The optional fifth argument is a pointer to an associative array -relating the checkbox values to the user-visible labels that will will +relating the checkbox values to the user-visible labels that will be printed next to them (-labels). If not provided, the values will be used as the default. @@ -4390,9 +4390,9 @@ You can pass a value of 'true' to dump() in order to get it to print the results out as plain text, suitable for incorporating into a <PRE> section. -As a shortcut, as of version 1.56 you can interpolate the entire -CGI object into a string and it will be replaced with the -the a nice HTML dump shown above: +As a shortcut, as of version 1.56 you can interpolate the entire CGI +object into a string and it will be replaced with the a nice HTML dump +shown above: $query=new CGI; print "<H2>Current Values</H2> $query\n"; diff --git a/lib/Exporter.pm b/lib/Exporter.pm index 7b03732790..66459b8af0 100644 --- a/lib/Exporter.pm +++ b/lib/Exporter.pm @@ -370,7 +370,7 @@ or constants that may not exist on some systems. The names of any symbols that cannot be exported should be listed in the C<@EXPORT_FAIL> array. -If a module attempts to import any of these symbols the Exporter will +If a module attempts to import any of these symbols the Exporter will give the module an opportunity to handle the situation before generating an error. The Exporter will call an export_fail method with a list of the failed symbols: diff --git a/lib/ExtUtils/MakeMaker.pm b/lib/ExtUtils/MakeMaker.pm index 273ebe7084..b03ccee7be 100644 --- a/lib/ExtUtils/MakeMaker.pm +++ b/lib/ExtUtils/MakeMaker.pm @@ -66,7 +66,7 @@ package ExtUtils::Liblist; package ExtUtils::MakeMaker; # -# Now we can can pull in the friends +# Now we can pull in the friends # $Is_VMS = $^O eq 'VMS'; $Is_OS2 = $^O eq 'os2'; diff --git a/lib/IPC/Open2.pm b/lib/IPC/Open2.pm index f4ae7482e2..32282d62b3 100644 --- a/lib/IPC/Open2.pm +++ b/lib/IPC/Open2.pm @@ -54,9 +54,9 @@ a time. Programs like B<sort> that read their entire input stream first, however, are quite apt to cause deadlock. The big problem with this approach is that if you don't have control -over source code being run in the the child process, you can't control what it does -with pipe buffering. Thus you can't just open a pipe to C<cat -v> and continually -read and write a line from it. +over source code being run in the child process, you can't control +what it does with pipe buffering. Thus you can't just open a pipe to +C<cat -v> and continually read and write a line from it. =head1 SEE ALSO diff --git a/lib/IPC/Open3.pm b/lib/IPC/Open3.pm index cfa8932432..43caa03763 100644 --- a/lib/IPC/Open3.pm +++ b/lib/IPC/Open3.pm @@ -57,7 +57,7 @@ time. Programs like B<sort> that read their entire input stream first, however, are quite apt to cause deadlock. The big problem with this approach is that if you don't have control -over source code being run in the the child process, you can't control +over source code being run in the child process, you can't control what it does with pipe buffering. Thus you can't just open a pipe to C<cat -v> and continually read and write a line from it. diff --git a/lib/Term/Cap.pm b/lib/Term/Cap.pm index 0b3b4aa4ad..5703405c9d 100644 --- a/lib/Term/Cap.pm +++ b/lib/Term/Cap.pm @@ -104,8 +104,11 @@ as C<$self-E<gt>{TERMCAP}>. sub termcap_path { ## private my @termcap_path; # $TERMCAP, if it's a filespec - push(@termcap_path, $ENV{TERMCAP}) if ((exists $ENV{TERMCAP}) && - ($ENV{TERMCAP} =~ /^\//)); + push(@termcap_path, $ENV{TERMCAP}) + if ((exists $ENV{TERMCAP}) && + (($^O eq 'os2' || $^O eq 'MSWin32') + ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/i + : $ENV{TERMCAP} =~ /^\//)); if ((exists $ENV{TERMPATH}) && ($ENV{TERMPATH})) { # Add the users $TERMPATH push(@termcap_path, split(/(:|\s+)/, $ENV{TERMPATH})) diff --git a/lib/Term/ReadLine.pm b/lib/Term/ReadLine.pm index 7b735eb424..a52b558b22 100644 --- a/lib/Term/ReadLine.pm +++ b/lib/Term/ReadLine.pm @@ -105,6 +105,15 @@ support reacher set of commands. All these commands are callable via method interface and have names which conform to standard conventions with the leading C<rl_> stripped. +The stub package included with the perl distribution allows two +additional methods: C<tkRunning> and C<ornaments>. The first one +makes Tk event loop run when waiting for user input (i.e., during +C<readline> method), the second one makes the command line stand out +by using termcap data. The argument to C<ornaments> should be 0, 1, +or a string of a form "aa,bb,cc,dd". Four components of this string +should be names of I<terminal capacities>, first two will be issued to +make the prompt standout, last two to make the input line standout. + =head1 EXPORTS None @@ -121,20 +130,22 @@ If the variable is not set, the best available package is loaded. =cut package Term::ReadLine::Stub; -@ISA = 'Term::ReadLine::Tk'; +@ISA = qw'Term::ReadLine::Tk Term::ReadLine::TermCap'; $DB::emacs = $DB::emacs; # To peacify -w +*rl_term_set = \@Term::ReadLine::TermCap::rl_term_set; sub ReadLine {'Term::ReadLine::Stub'} sub readline { my $self = shift; my ($in,$out,$str) = @$self; - print $out shift; + print $out $rl_term_set[0], shift, $rl_term_set[1], $rl_term_set[2]; $self->register_Tk if not $Term::ReadLine::registered and $Term::ReadLine::toloop and defined &Tk::DoOneEvent; #$str = scalar <$in>; $str = $self->get_line; + print $out $rl_term_set[3]; # bug in 5.000: chomping empty string creats length -1: chomp $str if defined $str; $str; @@ -200,7 +211,7 @@ sub OUT { shift->[1] } sub MinLine { undef } sub Attribs { {} } -my %features = (tkRunning => 1); +my %features = (tkRunning => 1, ornaments => 1); sub Features { \%features } package Term::ReadLine; # So late to allow the above code be defined? @@ -233,6 +244,35 @@ if (defined &Term::ReadLine::Gnu::readline) { @ISA = qw(Term::ReadLine::Stub); } +package Term::ReadLine::TermCap; + +# Prompt-start, prompt-end, command-line-start, command-line-end +# -- zero-width beautifies to emit around prompt and the command line. +@rl_term_set = ("","","",""); +# string encoded: +$rl_term_set = ',,,'; + +sub LoadTermCap { + return if defined $terminal; + + require Term::Cap; + $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning. +} + +sub ornaments { + shift; + return $rl_term_set unless @_; + $rl_term_set = shift; + $rl_term_set ||= ',,,'; + $rl_term_set = 'us,ue,md,me' if $rl_term_set == 1; + my @ts = split /,/, $rl_term_set, 4; + eval { LoadTermCap }; + warn("Cannot find termcap: $@\n"), return unless defined $terminal; + @rl_term_set = map {$_ ? $terminal->Tputs($_,1) || '' : ''} @ts; + return $rl_term_set; +} + + package Term::ReadLine::Tk; $count_handle = $count_DoOne = $count_loop = 0; diff --git a/lib/perl5db.pl b/lib/perl5db.pl index 9718fede67..d0a712534a 100644 --- a/lib/perl5db.pl +++ b/lib/perl5db.pl @@ -2,7 +2,7 @@ package DB; # Debugger for Perl 5.00x; perl5db.pl patch level: -$VERSION = 0.9909; +$VERSION = 0.9911; $header = "perl5db.pl patch level $VERSION"; # Enhanced by ilya@math.ohio-state.edu (Ilya Zakharevich) @@ -177,7 +177,7 @@ $inhibit_exit = $option{PrintRet} = 1; compactDump veryCompact quote HighBit undefPrint globPrint PrintRet UsageOnly frame AutoTrace TTY noTTY ReadLine NonStop LineInfo maxTraceLen - recallCommand ShellBang pager tkRunning + recallCommand ShellBang pager tkRunning ornaments signalLevel warnLevel dieLevel inhibit_exit); %optionVars = ( @@ -211,6 +211,7 @@ $inhibit_exit = $option{PrintRet} = 1; warnLevel => \&warnLevel, dieLevel => \&dieLevel, tkRunning => \&tkRunning, + ornaments => \&ornaments, ); %optionRequire = ( @@ -285,7 +286,7 @@ if ($notty) { if (-e "/dev/tty") { $console = "/dev/tty"; - } elsif (-e "con") { + } elsif (-e "con" or $^O eq 'MSWin32') { $console = "con"; } else { $console = "sys\$command"; @@ -1374,6 +1375,7 @@ sub setterm { if ($term->Features->{setHistory} and "@hist" ne "?") { $term->SetHistory(@hist); } + ornaments($ornaments) if defined $ornaments; } sub readline { @@ -1563,6 +1565,16 @@ sub shellBang { $psh; } +sub ornaments { + if (defined $term) { + local ($warnLevel,$dieLevel) = (0, 1); + return '' unless $term->Features->{ornaments}; + eval { $term->ornaments(@_) } || ''; + } else { + $ornaments = shift; + } +} + sub recallCommand { if (@_) { $rc = quotemeta shift; @@ -1679,6 +1691,7 @@ O [opt[=val]] [opt\"val\"] [opt?]... frame affects printing messages on entry and exit from subroutines. AutoTrace affects printing messages on every possible breaking point. maxTraceLen gives maximal length of evals/args listed in stack trace. + ornaments affects screen appearance of the command line. During startup options are initialized from \$ENV{PERLDB_OPTS}. You can put additional initialization options TTY, noTTY, ReadLine, and NonStop there. diff --git a/lib/vars.pm b/lib/vars.pm index 0b7dacc751..e007baa7b9 100644 --- a/lib/vars.pm +++ b/lib/vars.pm @@ -19,12 +19,13 @@ C<use subs> declarations are not BLOCK-scoped. They are thus effective for the entire file in which they appear. You may not rescind such declarations with C<no vars> or C<no subs>. -Packages such as the B<AutoLoader> and B<SelfLoader> that delay loading -of subroutines within packages can create problems with package lexicals -defined using C<my()>. While the B<vars> pragma cannot duplicate the -effect of package lexicals (total transparency outside of the package), -it can act as an acceptable substitute by pre-declaring global symbols, -ensuring their availability to to the later-loaded routines. +Packages such as the B<AutoLoader> and B<SelfLoader> that delay +loading of subroutines within packages can create problems with +package lexicals defined using C<my()>. While the B<vars> pragma +cannot duplicate the effect of package lexicals (total transparency +outside of the package), it can act as an acceptable substitute by +pre-declaring global symbols, ensuring their availability to the +later-loaded routines. See L<perlmod/Pragmatic Modules>. diff --git a/patchlevel.h b/patchlevel.h index 32c48008d4..8002c9371f 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -41,6 +41,7 @@ static char *local_patches[] = { ,"Dev97A - First development patch to 5.003_97" ,"Dev97B - Second development patch to 5.003_97" ,"Dev97C - Third development patch to 5.003_97" + ,"Dev97D - Fourth development patch to 5.003_97" ,NULL }; diff --git a/pod/perlcall.pod b/pod/perlcall.pod index 85e0237827..5a689d0304 100644 --- a/pod/perlcall.pod +++ b/pod/perlcall.pod @@ -356,7 +356,7 @@ As mentioned above, you can determine the context of the currently executing subroutine in Perl with I<wantarray>. The equivalent test can be made in C by using the C<GIMME_V> macro, which returns C<G_ARRAY> if you have been called in an array context, C<G_SCALAR> if -in a a scalar context, or C<G_VOID> if in a void context (i.e. the +in a scalar context, or C<G_VOID> if in a void context (i.e. the return value will not be used). An older version of this macro is called C<GIMME>; in a void context it returns C<G_SCALAR> instead of C<G_VOID>. An example of using the C<GIMME_V> macro is shown in diff --git a/pod/perldiag.pod b/pod/perldiag.pod index cdc7c59c1a..080c2a76d7 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -613,7 +613,7 @@ package name. =item Can't locate %s in @INC -(F) You said to do (or require, or use) a file that couldn't be found in +(F) You said to do (or require, or use) a file that couldn't be found in any of the libraries mentioned in @INC. Perhaps you need to set the PERL5LIB or PERL5OPT environment variable to say where the extra library is, or maybe the script needs to add the library name to @INC. Or maybe @@ -842,6 +842,12 @@ to 01411. Octal constants are introduced with a leading 0 in Perl, as in C. (W) You tried to close a filehandle that was never opened. +=item Compilation failed in require + +(F) Perl could not compile a file specified in a C<require> statement. +Perl uses this generic message when none of the errors that it encountered +were severe enough to halt compilation immediately. + =item connect() on closed fd (W) You tried to do a connect on a closed socket. Did you forget to check diff --git a/pod/perlfaq1.pod b/pod/perlfaq1.pod index 5d45c819c5..99d4b35bee 100644 --- a/pod/perlfaq1.pod +++ b/pod/perlfaq1.pod @@ -187,7 +187,7 @@ ok, while "awk and Perl" and "Python and perl" do not. It doesn't matter. In "standard terminology" a I<program> has been compiled to physical -machine code once, and can then be be run multiple times, whereas a +machine code once, and can then be run multiple times, whereas a I<script> must be translated by a program each time it's used. Perl programs, however, are usually neither strictly compiled nor strictly interpreted. They can be compiled to a bytecode form (something of a Perl diff --git a/pod/perlfaq3.pod b/pod/perlfaq3.pod index af7e53b8fe..e6bfd3de73 100644 --- a/pod/perlfaq3.pod +++ b/pod/perlfaq3.pod @@ -351,7 +351,7 @@ interpreter. If you install another port, or (eventually) build your own Win95/NT Perl using WinGCC, then you'll have to modify the Registry yourself. -Macintosh perl scripts will have the the appropriate Creator and +Macintosh perl scripts will have the appropriate Creator and Type, so that double-clicking them will invoke the perl application. I<IMPORTANT!>: Whatever you do, PLEASE don't get frustrated, and just diff --git a/pod/perlfaq5.pod b/pod/perlfaq5.pod index 47c6dead22..1c694f0347 100644 --- a/pod/perlfaq5.pod +++ b/pod/perlfaq5.pod @@ -406,8 +406,8 @@ atomic test-and-set instruction. In theory, this "ought" to work: except that lamentably, file creation (and deletion) is not atomic over NFS, so this won't work (at least, not every time) over the net. -Various schemes involving involving link() have been suggested, but -these tend to involve busy-wait, which is also subdesirable. +Various schemes involving link() have been suggested, but these tend +to involve busy-wait, which is also subdesirable. =head2 I still don't get locking. I just want to increment the number in the file. How can I do this? diff --git a/pod/perlfaq7.pod b/pod/perlfaq7.pod index 1047b28634..a1d60f84d5 100644 --- a/pod/perlfaq7.pod +++ b/pod/perlfaq7.pod @@ -339,9 +339,9 @@ IO::File modules, both part of the standard Perl distribution. To pass regexps around, you'll need to either use one of the highly experimental regular expression modules from CPAN (Nick Ing-Simmons's -Regexp or Ilya Zakharevich's Devel::Regexp), pass around strings -and use an exception-trapping eval, or else be be very, very clever. -Here's an example of how to pass in a string to be regexp compared: +Regexp or Ilya Zakharevich's Devel::Regexp), pass around strings and +use an exception-trapping eval, or else be very, very clever. Here's +an example of how to pass in a string to be regexp compared: sub compare($$) { my ($val1, $regexp) = @_; diff --git a/pod/perlfaq8.pod b/pod/perlfaq8.pod index fba9a249aa..831b1b41e7 100644 --- a/pod/perlfaq8.pod +++ b/pod/perlfaq8.pod @@ -619,7 +619,7 @@ module for other solutions. =item * -Open /dev/tty and use the the TIOCNOTTY ioctl on it. See L<tty(4)> +Open /dev/tty and use the TIOCNOTTY ioctl on it. See L<tty(4)> for details. =item * diff --git a/pod/perlipc.pod b/pod/perlipc.pod index 86dda59137..12b6b918ca 100644 --- a/pod/perlipc.pod +++ b/pod/perlipc.pod @@ -289,7 +289,7 @@ should check their Your_OS::Process module for other solutions. =item * -Open /dev/tty and use the the TIOCNOTTY ioctl on it. See L<tty(4)> +Open /dev/tty and use the TIOCNOTTY ioctl on it. See L<tty(4)> for details. =item * diff --git a/pod/perltoc.pod b/pod/perltoc.pod index ae5f768c47..858d783ea2 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -861,8 +861,8 @@ $^E, $^H, $^M delete on slices, flock, printf and sprintf, keys as an lvalue, my() in Control Structures, unpack() and pack(), use VERSION, use Module VERSION -LIST, prototype(FUNCTION), srand, $_ as Default, C<m//g> does not trigger a -pos() reset on failure, C<m//x> ignores whitespace before ?*+{}, nested +LIST, prototype(FUNCTION), srand, $_ as Default, C<m//g> 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 =item New builtin methods @@ -988,8 +988,10 @@ char *message; LEAVE; - if (optype == OP_REQUIRE) - DIE("%s", SvPVx(GvSV(errgv), na)); + if (optype == OP_REQUIRE) { + char* msg = SvPVx(GvSV(errgv), na); + DIE("%s", *msg ? msg : "Compilation failed in require"); + } return pop_return(); } } @@ -2081,8 +2083,10 @@ int gimme; pop_return(); lex_end(); LEAVE; - if (optype == OP_REQUIRE) - DIE("%s", SvPVx(GvSV(errgv), na)); + if (optype == OP_REQUIRE) { + char* msg = SvPVx(GvSV(errgv), na); + DIE("%s", *msg ? msg : "Compilation failed in require"); + } SvREFCNT_dec(rs); rs = SvREFCNT_inc(nrs); RETPUSHUNDEF; diff --git a/t/pragma/strict-subs b/t/pragma/strict-subs index 6864a3a979..43fce712d5 100644 --- a/t/pragma/strict-subs +++ b/t/pragma/strict-subs @@ -172,7 +172,7 @@ Fred ; require "./abc"; EXPECT Bareword "Fred" not allowed while "strict subs" in use at ./abc line 2. - at - line 2. +Compilation failed in require at - line 2. ######## --FILE-- abc.pm @@ -184,7 +184,7 @@ Fred ; use abc; EXPECT Bareword "Fred" not allowed while "strict subs" in use at abc.pm line 2. - at - line 2. +Compilation failed in require at - line 2. BEGIN failed--compilation aborted at - line 2. ######## diff --git a/t/pragma/strict-vars b/t/pragma/strict-vars index 9814fd6ee8..7ca9843c2c 100644 --- a/t/pragma/strict-vars +++ b/t/pragma/strict-vars @@ -115,7 +115,7 @@ require "./abc"; EXPECT Variable "$joe" is not imported at ./abc line 2. Global symbol "joe" requires explicit package name at ./abc line 2. - at - line 2. +Compilation failed in require at - line 2. ######## --FILE-- abc.pm @@ -128,7 +128,7 @@ use abc; EXPECT Variable "$joe" is not imported at abc.pm line 2. Global symbol "joe" requires explicit package name at abc.pm line 2. - at - line 2. +Compilation failed in require at - line 2. BEGIN failed--compilation aborted at - line 2. ######## |