diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2002-03-13 08:08:36 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2002-03-13 08:08:36 +0000 |
commit | a8956ac168515b628fea02a03d82f87da837db26 (patch) | |
tree | 8fc21a86dd1466fea6018879ab1770a8af6a3942 | |
parent | a3e7df5fa290fbcf8aee7020e4ba4bacea721d9e (diff) | |
parent | 205a1031dab8ab505a4d747e26b52b5dea3722f0 (diff) | |
download | perl-a8956ac168515b628fea02a03d82f87da837db26.tar.gz |
Integrate mainline.
p4raw-id: //depot/perlio@15215
-rw-r--r-- | MANIFEST | 12 | ||||
-rw-r--r-- | Porting/findrfuncs | 27 | ||||
-rwxr-xr-x | ext/B/t/stash.t | 2 | ||||
-rw-r--r-- | ext/Data/Util/Changes | 27 | ||||
-rw-r--r-- | ext/Data/Util/Makefile.PL | 53 | ||||
-rw-r--r-- | ext/Data/Util/Util.xs | 29 | ||||
-rw-r--r-- | ext/Data/Util/lib/Data/Util.pm | 73 | ||||
-rw-r--r-- | ext/Data/Util/t/Data.t | 42 | ||||
-rw-r--r-- | ext/Encode/lib/Encode/CN/HZ.pm | 3 | ||||
-rw-r--r-- | ext/Encode/lib/Encode/JP/ISO_2022_JP.pm | 2 | ||||
-rw-r--r-- | ext/Encode/lib/Encode/JP/JIS.pm | 3 | ||||
-rw-r--r-- | lib/AutoSplit.t | 4 | ||||
-rw-r--r-- | lib/File/stat.t | 8 | ||||
-rw-r--r-- | lib/Hash/Util.pm (renamed from ext/Data/Util/lib/Hash/Util.pm) | 31 | ||||
-rw-r--r-- | lib/Hash/Util.t (renamed from ext/Data/Util/t/Hash.t) | 13 | ||||
-rw-r--r-- | lib/Internals.t | 58 | ||||
-rw-r--r-- | lib/Test/Simple/t/fail-more.t | 4 | ||||
-rw-r--r-- | pod/perldelta.pod | 12 | ||||
-rw-r--r-- | pod/perldiag.pod | 2 | ||||
-rw-r--r-- | pod/perlfunc.pod | 5 | ||||
-rw-r--r-- | pod/perlhack.pod | 42 | ||||
-rw-r--r-- | pod/perlmodlib.pod | 180 | ||||
-rw-r--r-- | pod/perltoc.pod | 637 | ||||
-rw-r--r-- | pp_ctl.c | 2 | ||||
-rwxr-xr-x | t/op/override.t | 2 | ||||
-rw-r--r-- | toke.c | 3 | ||||
-rw-r--r-- | universal.c | 42 |
27 files changed, 716 insertions, 602 deletions
@@ -127,13 +127,6 @@ ext/Data/Dumper/Makefile.PL Data pretty printer, makefile writer ext/Data/Dumper/t/dumper.t See if Data::Dumper works ext/Data/Dumper/t/overload.t See if Data::Dumper works for overloaded data ext/Data/Dumper/Todo Data pretty printer, futures -ext/Data/Util/Changes Data/Hash::Util, Change log -ext/Data/Util/Makefile.PL Data/Hash::Util, Makefile.PL -ext/Data/Util/Util.xs Data/Hash::Util, Data::Util XS code -ext/Data/Util/lib/Data/Util.pm Data/Hash::Util, Data::Util -ext/Data/Util/lib/Hash/Util.pm Data/Hash::Util, Hash::Util -ext/Data/Util/t/Data.t Data/Hash::Util, Data::Util test -ext/Data/Util/t/Hash.t Data/Hash::Util, Hash::Util test ext/DB_File/Changes Berkeley DB extension change log ext/DB_File/dbinfo Berkeley DB database version checker ext/DB_File/DB_File.pm Berkeley DB extension Perl module @@ -1087,6 +1080,8 @@ lib/Getopt/Std.t See if Getopt::Std and Getopt::Long work lib/getopts.pl Perl library supporting option parsing lib/h2ph.t See if h2ph works like it should lib/h2xs.t See if h2xs produces expected lists of files +lib/Hash/Util.pm Hash::Util +lib/Hash/Util.t See if Hash::Util works lib/hostname.pl Old hostname code lib/I18N/Collate.pm Routines to do strxfrm-based collation lib/I18N/Collate.t See if I18N::Collate works @@ -1100,6 +1095,7 @@ lib/if.t Tests for "use if" lib/importenv.pl Perl routine to get environment into variables lib/integer.pm For "use integer" lib/integer.t For "use integer" testing +lib/Internals.t For Internals::* testing lib/IPC/Open2.pm Open a two-ended pipe lib/IPC/Open2.t See if IPC::Open2 works lib/IPC/Open3.pm Open a three-ended pipe! @@ -2064,8 +2060,8 @@ Porting/checkVERSION.pl Check whether we have $VERSIONs Porting/config.sh Sample config.sh Porting/config_H Sample config.h Porting/Contract Social contract for contributed modules in Perl core -Porting/findvars Find occurrences of words Porting/findrfuncs Find reentrant variants of functions used in an executable +Porting/findvars Find occurrences of words Porting/fixCORE Find and fix modules that generate warnings Porting/fixvars Find undeclared variables with C compiler and fix em Porting/genlog Generate formatted changelogs by querying p4d diff --git a/Porting/findrfuncs b/Porting/findrfuncs index ea019c982a..bef27594a4 100644 --- a/Porting/findrfuncs +++ b/Porting/findrfuncs @@ -49,8 +49,6 @@ find(sub { open F, "<$File::Find::name" or die "Can't open $File::Find::name: $!"; my $line; - # None of the <netdb.h> _r prototypes are to be used in Tru64. - return if $^O eq 'dec_osf' && $_ eq 'netdb.h'; while (defined ($line = <F>)) { if ($line =~ /\b(\w+_r)\b/) { #warn "$1 => $File::Find::name\n"; @@ -64,13 +62,38 @@ find(sub { delete $rfuncs{setlocale_r} if $^O eq 'linux'; # delete obsolete (as promised by man pages) symbols +my $netdb_r_obsolete; if ($^O eq 'hpux') { delete $rfuncs{crypt_r}; delete $rfuncs{setlocale_r}; delete $rfuncs{strerror_r}; + $netdb_r_obsolete = 1; } elsif ($^O eq 'dec_osf') { delete $rfuncs{crypt_r}; delete $rfuncs{strerror_r}; + $netdb_r_obsolete = 1; +} +if ($netdb_r_obsolete) { + delete @rfuncs{qw(endhostent_r + endnetent_r + endprotoent_r + endservent_r + gethostbyaddr_r + gethostbyname_r + gethostent_r + getnetbyaddr_r + getnetbyname_r + getnetent_r + getprotobynumber_r + getprotobyname_r + getprotoent_r + getservbyname_r + getservbyport_r + getservent_r + sethostent_r + setnetent_r + setprotoent_r + setservent_r)}; } my %syms; diff --git a/ext/B/t/stash.t b/ext/B/t/stash.t index 9916521414..9448425283 100755 --- a/ext/B/t/stash.t +++ b/ext/B/t/stash.t @@ -66,7 +66,7 @@ print "# got = @got\n"; $got = "@got"; -my $expected = "attributes Carp Carp::Heavy DB Exporter Exporter::Heavy main utf8 warnings"; +my $expected = "attributes Carp Carp::Heavy DB Exporter Exporter::Heavy Internals main utf8 warnings"; { no strict 'vars'; diff --git a/ext/Data/Util/Changes b/ext/Data/Util/Changes deleted file mode 100644 index f877d08678..0000000000 --- a/ext/Data/Util/Changes +++ /dev/null @@ -1,27 +0,0 @@ -0.04 Sun Mar 10 13:37:08 EST 2002 - * Bugs in the restricted hash implementation have been fixed. All - tests should pass on a perl sometime after about 15160 - * Minimum version is now 5.7.3 - - Changed diagnostic expecations to match new restricted hash - diagnostics. - -0.03 Sat Mar 9 20:11:00 EST 2002 - *** NOTE *** There are known failures in t/Hash.t. These are - due to bugs in perl's restricted hash implementation. They have - been left failing so Those That Know How To Fix It know where - the bugs are. - - * Data::Util::readonly() is now sv_readonly_flag() to make its - function less ambiguous. - * Hash::Util::lock_key/unlock_key is now lock_value/unlock_value - to make its functionality less ambiguous. It also takes - somewhat different arguments. - * Added lock_hash(), unlock_hash(). - -0.02 Wed Feb 27 23:35:58 EST 2002 - * lock_keys(%hash, @keys) implemented - * tarball name changed to the somewhat more proper Data-Hash-Utils - -0.01 Tue Feb 26 23:18:03 EST 2002 - - First released version - - There are some failures at the end of Hash.t diff --git a/ext/Data/Util/Makefile.PL b/ext/Data/Util/Makefile.PL deleted file mode 100644 index ef6bc3c3ab..0000000000 --- a/ext/Data/Util/Makefile.PL +++ /dev/null @@ -1,53 +0,0 @@ -# A template for Makefile.PL. -# - Set the $PACKAGE variable to the name of your module. -# - Set $LAST_API_CHANGE to reflect the last version you changed the API -# of your module. -# - Fill in your dependencies in PREREQ_PM -# Alternatively, you can say the hell with this and use h2xs. - -require 5.007003; - -use ExtUtils::MakeMaker; - -$PACKAGE = 'Data::Util'; -($PACKAGE_FILE = $PACKAGE) =~ s|::|/|g; -$LAST_API_CHANGE = 0.03; - -eval "require $PACKAGE"; - -unless ($@) { # Make sure we did find the module. - print <<"CHANGE_WARN" if ${$PACKAGE.'::VERSION'} < $LAST_API_CHANGE; - -NOTE: There have been API changes between this version and any older -than version $LAST_API_CHANGE! Please read the Changes file if you -are upgrading from a version older than $LAST_API_CHANGE. - -CHANGE_WARN -} - -WriteMakefile( - NAME => $PACKAGE, - DISTNAME => 'Data-Hash-Utils', - VERSION_FROM => "lib/$PACKAGE_FILE.pm", # finds $VERSION - PREREQ_PM => { }, -); - - -{ - package MY; - - sub test_via_harness { - my($self, $orig_perl, $tests) = @_; - - my @perls = ($orig_perl); - push @perls, qw(bleadperl) - if $ENV{PERL_TEST_ALL}; - - my $out; - foreach my $perl (@perls) { - $out .= $self->SUPER::test_via_harness($perl, $tests); - } - - return $out; - } -} diff --git a/ext/Data/Util/Util.xs b/ext/Data/Util/Util.xs deleted file mode 100644 index 6d246ddf51..0000000000 --- a/ext/Data/Util/Util.xs +++ /dev/null @@ -1,29 +0,0 @@ -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - - -MODULE=Data::Util PACKAGE=Data::Util - -int -sv_readonly_flag(...) -PROTOTYPE: \[$%@];$ -CODE: -{ - SV *sv = SvRV(ST(0)); - IV old = SvREADONLY(sv); - - if (items == 2) { - if (SvTRUE(ST(1))) { - SvREADONLY_on(sv); - } - else { - SvREADONLY_off(sv); - } - } - if (old) - XSRETURN_YES; - else - XSRETURN_NO; -} - diff --git a/ext/Data/Util/lib/Data/Util.pm b/ext/Data/Util/lib/Data/Util.pm deleted file mode 100644 index 26e2993a9b..0000000000 --- a/ext/Data/Util/lib/Data/Util.pm +++ /dev/null @@ -1,73 +0,0 @@ -package Data::Util; - -require Exporter; -require DynaLoader; - -our @ISA = qw(Exporter DynaLoader); -our @EXPORT_OK = qw(sv_readonly_flag); -our $VERSION = 0.04; - -bootstrap Data::Util $VERSION; - -1; - -__END__ - -=head1 NAME - -Data::Util - A selection of general-utility data subroutines - -=head1 SYNOPSIS - - use Data::Util qw(sv_readonly_flag); - - my $sv_readonly = sv_readonly_flag(%some_data); - - sv_readonly_flag(@some_data, 1); # Set the sv_readonly flag on - # @some_data to true. - -=head1 DESCRIPTION - -C<Data::Util> contains a selection of subroutines which are useful on -scalars, hashes and lists (and thus wouldn't fit into Scalar, Hash or -List::Util). All of the routines herein will work equally well on a -scalar, hash, list or even hash & list elements. - - sv_readonly_flag($some_data); - sv_readonly_flag(@some_data); - sv_readonly_flag(%some_data); - sv_readonly_flag($some_data{key}); - sv_readonly_flag($some_data[3]); - -We'll just refer to the conglomeration as "DATA". - -By default C<Data::Util> does not export any subroutines. You can ask -for... - -=over 4 - -=item sv_readonly_flag - - my $sv_readonly = sv_readonly_flag(DATA); - sv_readonly_flag(DATA, 1); # set sv_readonly true - sv_readonly_flag(DATA, 0); # set sv_readonly false - -This gets/sets the sv_readonly flag on the given DATA. When setting -it returns the previous state of the flag. This is intended for -people I<that know what they're doing.> - -The exact behavior exhibited by a piece of DATA when sv_readonly is -set depends on what type of data it is. B<It doesn't even necessarily -make the data readonly!> Look for specific functions in Scalar::Util, -List::Util and Hash::Util for making those respective types readonly. - -=head1 AUTHOR - -Michael G Schwern <schwern@pobox.com> using XS code by Nick Ing-Simmons. - -=head1 SEE ALSO - -L<Scalar::Util>, L<List::Util>, L<Hash::Util> - -=cut - diff --git a/ext/Data/Util/t/Data.t b/ext/Data/Util/t/Data.t deleted file mode 100644 index 6198c3a9f3..0000000000 --- a/ext/Data/Util/t/Data.t +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/perl -Tw - -BEGIN { - if( $ENV{PERL_CORE} ) { - @INC = '../lib'; - chdir 't'; - } -} -use Test::More tests => 26; - -use Data::Util; -BEGIN { use_ok 'Data::Util', qw(sv_readonly_flag); } - -ok( !sv_readonly_flag $foo ); -ok( !sv_readonly_flag $foo, 1 ); -ok( sv_readonly_flag $foo ); -ok( sv_readonly_flag $foo, 0 ); -ok( !sv_readonly_flag $foo ); - -ok( !sv_readonly_flag @foo ); -ok( !sv_readonly_flag @foo, 1 ); -ok( sv_readonly_flag @foo ); -ok( sv_readonly_flag @foo, 0 ); -ok( !sv_readonly_flag @foo ); - -ok( !sv_readonly_flag $foo[2] ); -ok( !sv_readonly_flag $foo[2], 1 ); -ok( sv_readonly_flag $foo[2] ); -ok( sv_readonly_flag $foo[2], 0 ); -ok( !sv_readonly_flag $foo[2] ); - -ok( !sv_readonly_flag %foo ); -ok( !sv_readonly_flag %foo, 1 ); -ok( sv_readonly_flag %foo ); -ok( sv_readonly_flag %foo, 0 ); -ok( !sv_readonly_flag %foo ); - -ok( !sv_readonly_flag $foo{foo} ); -ok( !sv_readonly_flag $foo{foo}, 1 ); -ok( sv_readonly_flag $foo{foo} ); -ok( sv_readonly_flag $foo{foo}, 0 ); -ok( !sv_readonly_flag $foo{foo} ); diff --git a/ext/Encode/lib/Encode/CN/HZ.pm b/ext/Encode/lib/Encode/CN/HZ.pm index e4c2a8f18e..f9ff3261ee 100644 --- a/ext/Encode/lib/Encode/CN/HZ.pm +++ b/ext/Encode/lib/Encode/CN/HZ.pm @@ -3,6 +3,9 @@ package Encode::CN::HZ; use strict; no warnings 'redefine'; # to quell the "use Encode" below +use vars qw($VERSION); +$VERSION = 0.01; + use Encode::CN; use Encode qw|encode decode|; use base 'Encode::Encoding'; diff --git a/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm b/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm index d8c8fb743a..b8c77b340f 100644 --- a/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm +++ b/ext/Encode/lib/Encode/JP/ISO_2022_JP.pm @@ -4,6 +4,8 @@ use Encode::JP::JIS; use Encode::JP::H2Z; use base 'Encode::Encoding'; +use vars qw($VERSION); +$VERSION = 0.01; my $canon = 'iso-2022-jp'; my $obj = bless {name => $canon}, __PACKAGE__; diff --git a/ext/Encode/lib/Encode/JP/JIS.pm b/ext/Encode/lib/Encode/JP/JIS.pm index 394a7e62d3..810477d10b 100644 --- a/ext/Encode/lib/Encode/JP/JIS.pm +++ b/ext/Encode/lib/Encode/JP/JIS.pm @@ -4,6 +4,9 @@ use base 'Encode::Encoding'; use strict; +use vars qw($VERSION); +$VERSION = 0.01; + # Just for the time being, we implement jis-7bit # encoding via EUC diff --git a/lib/AutoSplit.t b/lib/AutoSplit.t index 7cc680ef75..3e92e4b3cf 100644 --- a/lib/AutoSplit.t +++ b/lib/AutoSplit.t @@ -336,7 +336,7 @@ AutoSplitting *INC**PATHSEP**MOD*.pm (*DIR**PATHSEP**MOD*) *DIR*/*MOD*/flying_pig.al ## Tests is (&*MOD*::skeleton, "bones", "skeleton"); -eval {&*MOD*::gonner}; ok ($@ =~ m!^Can't locate auto/*MOD*/gonner.al in \@INC!, "Check &*MOD*::gonner is now a gonner") or print "# \$\@='$@'\n"; +eval {&*MOD*::gonner}; ok ($@ =~ m!^Can't locate file auto/*MOD*/gonner.al in \@INC!, "Check &*MOD*::gonner is now a gonner") or print "# \$\@='$@'\n"; ## Sleep 4 ## SameAgain @@ -408,4 +408,4 @@ AutoSplitting *INC**PATHSEP**MOD*.pm (*DIR**PATHSEP**MOD*) *DIR*/*MOD*/wraith.al ## Tests is (&*MOD*::wraith, 9); -eval {&*MOD*::flying_pig}; ok ($@ =~ m!^Can't locate auto/*MOD*/flying_pig.al in \@INC!, "There are no flying pigs") or print "# \$\@='$@'\n"; +eval {&*MOD*::flying_pig}; ok ($@ =~ m!^Can't locate file auto/*MOD*/flying_pig.al in \@INC!, "There are no flying pigs") or print "# \$\@='$@'\n"; diff --git a/lib/File/stat.t b/lib/File/stat.t index 3c867def92..7a114ce822 100644 --- a/lib/File/stat.t +++ b/lib/File/stat.t @@ -67,9 +67,15 @@ SKIP: { '... and filehandle in another package' ); close STAT; +# VOS open() updates atime; ignore this error (posix-975). + my $stat3 = $stat2; + if ($^O eq 'vos') { + $$stat3[8] = $$stat[8]; + } + main::skip("Win32: different stat-info on filehandle", 1) if $^O eq 'MSWin32'; - main::is( "@$stat", "@$stat2", '... and must match normal stat' ); + main::is( "@$stat", "@$stat3", '... and must match normal stat' ); } local $!; diff --git a/ext/Data/Util/lib/Hash/Util.pm b/lib/Hash/Util.pm index c54fbdc0d1..528711ae55 100644 --- a/ext/Data/Util/lib/Hash/Util.pm +++ b/lib/Hash/Util.pm @@ -2,7 +2,6 @@ package Hash::Util; require 5.007003; use strict; -use Data::Util qw(sv_readonly_flag); use Carp; require Exporter; @@ -12,7 +11,6 @@ our @EXPORT_OK = qw(lock_keys unlock_keys lock_value unlock_value ); our $VERSION = 0.04; - =head1 NAME Hash::Util - A selection of general-utility hash subroutines @@ -21,8 +19,7 @@ Hash::Util - A selection of general-utility hash subroutines use Hash::Util qw(lock_keys unlock_keys lock_value unlock_value - lock_hash unlock_hash - ); + lock_hash unlock_hash); %hash = (foo => 42, bar => 23); lock_keys(%hash); @@ -35,7 +32,6 @@ Hash::Util - A selection of general-utility hash subroutines lock_hash (%hash); unlock_hash(%hash); - =head1 DESCRIPTION C<Hash::Util> contains special functions for manipulating hashes that @@ -61,13 +57,13 @@ This is intended to largely replace the deprecated pseudo-hashes. lock_keys(%hash); lock_keys(%hash, @keys); - unlock_keys(%hash;) - Restricts the given %hash's set of keys to @keys. If @keys is not given it restricts it to its current keyset. No more keys can be added. delete() and exists() will still work, but it does not effect the set of allowed keys. + unlock_keys(%hash;) + Removes the restriction on the %hash's keyset. =cut @@ -87,14 +83,14 @@ sub lock_keys (\%;@) { foreach my $k (@keys) { $hash->{$k} = undef unless exists $hash->{$k}; } - sv_readonly_flag %$hash, 1; + Internals::SvREADONLY %$hash, 1; foreach my $k (@keys) { delete $hash->{$k} unless $original_keys{$k}; } } else { - sv_readonly_flag %$hash, 1; + Internals::SvREADONLY %$hash, 1; } return undef; @@ -103,7 +99,7 @@ sub lock_keys (\%;@) { sub unlock_keys (\%) { my($hash) = shift; - sv_readonly_flag %$hash, 0; + Internals::SvREADONLY %$hash, 0; return undef; } @@ -124,13 +120,13 @@ key cannot be changed. sub lock_value (\%$) { my($hash, $key) = @_; carp "Cannot usefully lock values in an unlocked hash" - unless sv_readonly_flag %$hash; - sv_readonly_flag $hash->{$key}, 1; + unless Internals::SvREADONLY %$hash; + Internals::SvREADONLY $hash->{$key}, 1; } sub unlock_value (\%$) { my($hash, $key) = @_; - sv_readonly_flag $hash->{$key}, 0; + Internals::SvREADONLY $hash->{$key}, 0; } @@ -139,14 +135,15 @@ sub unlock_value (\%$) { =item B<unlock_hash> lock_hash(%hash); - unlock_hash(%hash); lock_hash() locks an entire hash, making all keys and values readonly. No value can be changed, no keys can be added or deleted. -unlock_hash() does the opposite. All keys and values are made -read/write. All values can be changed and keys can be added and -deleted. + unlock_hash(%hash); + +unlock_hash() does the opposite of lock_hash(). All keys and values +are made read/write. All values can be changed and keys can be added +and deleted. =cut diff --git a/ext/Data/Util/t/Hash.t b/lib/Hash/Util.t index b1f9e79304..0fe3128172 100644 --- a/ext/Data/Util/t/Hash.t +++ b/lib/Hash/Util.t @@ -7,7 +7,6 @@ BEGIN { } } use Test::More tests => 45; -use Data::Util qw(sv_readonly_flag); my @Exported_Funcs; BEGIN { @@ -154,15 +153,15 @@ TODO: { my %hash = (foo => 42, bar => 23); lock_hash( %hash ); - ok( sv_readonly_flag(%hash) ); - ok( sv_readonly_flag($hash{foo}) ); - ok( sv_readonly_flag($hash{bar}) ); + ok( Internals::SvREADONLY(%hash) ); + ok( Internals::SvREADONLY($hash{foo}) ); + ok( Internals::SvREADONLY($hash{bar}) ); unlock_hash ( %hash ); - ok( !sv_readonly_flag(%hash) ); - ok( !sv_readonly_flag($hash{foo}) ); - ok( !sv_readonly_flag($hash{bar}) ); + ok( !Internals::SvREADONLY(%hash) ); + ok( !Internals::SvREADONLY($hash{foo}) ); + ok( !Internals::SvREADONLY($hash{bar}) ); } diff --git a/lib/Internals.t b/lib/Internals.t new file mode 100644 index 0000000000..e8abebbb2d --- /dev/null +++ b/lib/Internals.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -Tw + +BEGIN { + if( $ENV{PERL_CORE} ) { + @INC = '../lib'; + chdir 't'; + } +} + +use Test::More tests => 33; + +my $foo; +my @foo; +my %foo; + +ok( !Internals::SvREADONLY $foo ); +ok( Internals::SvREADONLY $foo, 1 ); +ok( Internals::SvREADONLY $foo ); +ok( !Internals::SvREADONLY $foo, 0 ); +ok( !Internals::SvREADONLY $foo ); + +ok( !Internals::SvREADONLY @foo ); +ok( Internals::SvREADONLY @foo, 1 ); +ok( Internals::SvREADONLY @foo ); +ok( !Internals::SvREADONLY @foo, 0 ); +ok( !Internals::SvREADONLY @foo ); + +ok( !Internals::SvREADONLY $foo[2] ); +ok( Internals::SvREADONLY $foo[2], 1 ); +ok( Internals::SvREADONLY $foo[2] ); +ok( !Internals::SvREADONLY $foo[2], 0 ); +ok( !Internals::SvREADONLY $foo[2] ); + +ok( !Internals::SvREADONLY %foo ); +ok( Internals::SvREADONLY %foo, 1 ); +ok( Internals::SvREADONLY %foo ); +ok( !Internals::SvREADONLY %foo, 0 ); +ok( !Internals::SvREADONLY %foo ); + +ok( !Internals::SvREADONLY $foo{foo} ); +ok( Internals::SvREADONLY $foo{foo}, 1 ); +ok( Internals::SvREADONLY $foo{foo} ); +ok( !Internals::SvREADONLY $foo{foo}, 0 ); +ok( !Internals::SvREADONLY $foo{foo} ); + +is( Internals::SvREFCNT($foo), 1 ); +{ + my $bar = \$foo; + is( Internals::SvREFCNT($foo), 2 ); + is( Internals::SvREFCNT($bar), 1 ); +} +is( Internals::SvREFCNT($foo), 1 ); + +is( Internals::SvREFCNT(@foo), 1 ); +is( Internals::SvREFCNT($foo[2]), 1 ); +is( Internals::SvREFCNT(%foo), 1 ); +is( Internals::SvREFCNT($foo{foo}), 1 ); + diff --git a/lib/Test/Simple/t/fail-more.t b/lib/Test/Simple/t/fail-more.t index 29f8eb25ac..3e3f6b3011 100644 --- a/lib/Test/Simple/t/fail-more.t +++ b/lib/Test/Simple/t/fail-more.t @@ -207,10 +207,10 @@ ERR my $more_err_re = <<ERR; # Failed test \\($filename at line 84\\) # Tried to use 'Hooble::mooble::yooble'. -# Error: Can't locate Hooble.* in \\\@INC .* +# Error: Can't locate file Hooble.* in \\\@INC .* # Failed test \\($filename at line 85\\) # Tried to require 'ALL::YOUR::BASE::ARE::BELONG::TO::US::wibble'. -# Error: Can't locate ALL.* in \\\@INC .* +# Error: Can't locate file ALL.* in \\\@INC .* # Looks like you failed $Total tests of $Total. ERR diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 77056e4456..c07cda8a2d 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -207,7 +207,8 @@ and will be removed in Perl 5.10.0, and the feature will be implemented differently. Not only is the current interface rather ugly, but the current implementation slows down normal array and hash use quite noticeably. The C<fields> pragma interface will remain -available. +available. The I<restricted hashes> interface is expected to +be the replacement interface (see L<Hash::Util>). =item * @@ -627,6 +628,15 @@ Any encoding supported by Encode module is also available to the =item * +C<Hash::Util> is the interface to the new I<restricted hashes> +feature. A restricted hash is restricted to a certain set of keys, +no keys outside the set can be added. Also individual keys can be +restricted so that the key cannot be deleted and the value cannot be +changed. (Implemented by Jeffrey Friedl, Nick Ing-Simmons, and +Michael Schwern.) + +=item * + C<I18N::Langinfo> can be use to query locale information. See L<I18N::Langinfo>. diff --git a/pod/perldiag.pod b/pod/perldiag.pod index c86ed26e5a..b2284aa10d 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -785,7 +785,7 @@ handle, because when it goes to restore the old value of whatever $ref pointed to after the scope of the local() is finished, it can't be sure that $ref will still be a reference. -=item Can't locate %s +=item Can't locate file %s (F) You said to C<do> (or C<require>, or C<use>) a file that couldn't be found. Perl looks for the file in all the locations mentioned in @INC, diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 63d12d70ab..b32cd9464c 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -1276,7 +1276,10 @@ formed from the files listed on the command line and accessed via the C<< <> >> operator. Since C<< <> >> isn't explicitly opened, as a normal filehandle is, an C<eof()> before C<< <> >> has been used will cause C<@ARGV> to be examined to determine if input is -available. +available. Similarly, an C<eof()> after C<< <> >> has returned +end-of-file will assume you are processing another C<@ARGV> list, +and if you haven't set C<@ARGV>, will read input from C<STDIN>; +see L<perlop/"I/O Operators">. In a C<< while (<>) >> loop, C<eof> or C<eof(ARGV)> can be used to detect the end of each file, C<eof()> will only detect the end of the diff --git a/pod/perlhack.pod b/pod/perlhack.pod index 79905bbdc4..85c2944499 100644 --- a/pod/perlhack.pod +++ b/pod/perlhack.pod @@ -1249,7 +1249,6 @@ important ones are explained in L<perlxs> as well. Pay special attention to L<perlguts/Background and PERL_IMPLICIT_CONTEXT> for information on the C<[pad]THX_?> macros. - =head2 Poking at Perl To really poke around with Perl, you'll probably want to build Perl for @@ -2192,6 +2191,47 @@ Unexecuted procedures. For further information, see your system's manual pages for pixie and prof. +=head2 Miscellaneous tricks + +=over 4 + +=item * + +hose debugging perl with the DDD frontend over gdb may find the +following useful: + +You can extend the data conversion shortcuts menu, so for example you +can display an SV's IV value with one click, without doing any typing. +To do that simply edit ~/.ddd/init file and add after: + + ! Display shortcuts. + Ddd*gdbDisplayShortcuts: \ + /t () // Convert to Bin\n\ + /d () // Convert to Dec\n\ + /x () // Convert to Hex\n\ + /o () // Convert to Oct(\n\ + +the following two lines: + + ((XPV*) (())->sv_any )->xpv_pv // 2pvx\n\ + ((XPVIV*) (())->sv_any )->xiv_iv // 2ivx + +so now you can do ivx and pvx lookups or you can plug there the +sv_peek "conversion": + + Perl_sv_peek(my_perl, (SV*)()) // sv_peek + +(The my_perl is for threaded builds.) +Just remember that every line, but the last one, should end with \n\ + +Alternatively edit the init file interactively via: +3rd mouse button -> New Display -> Edit Menu + +Note: you can define up to 20 conversion shortcuts in the gdb +section. + +=back + =head2 CONCLUSION We've had a brief look around the Perl source, an overview of the stages diff --git a/pod/perlmodlib.pod b/pod/perlmodlib.pod index 8ad8072bab..5a0d28f1b6 100644 --- a/pod/perlmodlib.pod +++ b/pod/perlmodlib.pod @@ -53,6 +53,10 @@ The following pragmas are defined (and have their own documentation). Get/set subroutine or variable attributes +=item attrs + +Set/get attributes of a subroutine (deprecated) + =item autouse Postpone load of modules until a function is used @@ -93,6 +97,10 @@ Compile-time class fields Control the filetest permission operators +=item if + +C<use> a Perl module if a condition holds + =item integer Use integer arithmetic instead of floating point @@ -109,10 +117,18 @@ Use and avoid POSIX locales for built-in operations Set default disciplines for input and output +=item ops + +Restrict unsafe operations when compiling + =item overload Package for overloading perl operations +=item re + +Alter regular expression behaviour + =item sigtrap Enable simple signal handling @@ -129,6 +145,10 @@ Restrict unsafe constructs Predeclare sub names +=item threads + +Perl extension allowing use of interpreter based threads from perl + =item utf8 Enable/disable UTF-8 (or UTF-EBCDIC) in source code @@ -175,10 +195,82 @@ Load subroutines only on demand Split a package for autoloading +=item B + +The Perl Compiler + +=item B::Asmdata + +Autogenerated data about Perl ops, used to generate bytecode + +=item B::Assembler + +Assemble Perl bytecode + +=item B::Bblock + +Walk basic blocks + +=item B::Bytecode + +Perl compiler's bytecode backend + +=item B::C + +Perl compiler's C backend + +=item B::CC + +Perl compiler's optimized C translation backend + +=item B::Concise + +Walk Perl syntax tree, printing concise info about ops + +=item B::Debug + +Walk Perl syntax tree, printing debug info about ops + +=item B::Deparse + +Perl compiler backend to produce perl code + +=item B::Disassembler + +Disassemble Perl bytecode + +=item B::Lint + +Perl lint + +=item B::Showlex + +Show lexical variables used in functions or files + +=item B::Stackobj + +Helper module for CC backend + +=item B::Stash + +Show what stashes are loaded + +=item B::Terse + +Walk Perl syntax tree, printing terse info about ops + +=item B::Xref + +Generates cross reference reports for Perl programs + =item Benchmark Benchmark running times of Perl code +=item ByteLoader + +Load byte compiled perl code + =item CGI Simple Common Gateway Interface Class @@ -251,6 +343,10 @@ Get pathname of current working directory Programmatic interface to the Perl debugging API (draft, subject to +=item DB_File + +Perl5 access to Berkeley DB version 1.x + =item Devel::SelfStubber Generate stubs for a SelfLoading module @@ -267,6 +363,10 @@ Supply object methods for directory handles Provides screen dump of Perl data. +=item Encode + +Character encodings + =item English Use nice English (or awk) names for ugly punctuation variables @@ -307,6 +407,10 @@ Inventory management of installed modules Determine libraries to use and how to use them +=item ExtUtils::MM_BeOS + +Methods to override UN*X behaviour in ExtUtils::MakeMaker + =item ExtUtils::MM_Cygwin Methods to override UN*X behaviour in ExtUtils::MakeMaker @@ -359,6 +463,10 @@ Add blib/* directories to @INC Replace functions with equivalents which succeed or die +=item Fcntl + +Load the C Fcntl.h defines + =item File::Basename Split a pathname into pieces @@ -381,7 +489,7 @@ DOS like globbing and then some =item File::Find -Traverse a file tree +Traverse a directory tree. =item File::Path @@ -455,6 +563,10 @@ Extended processing of command line options Process single-character switches with switch clustering +=item Hash::Util + +A selection of general-utility hash subroutines + =item I18N::Collate Compare 8-bit scalar data according to the current locale @@ -467,6 +579,10 @@ Functions for dealing with RFC3066-style language tags Tags and names for human languages +=item IO + +Load various IO modules + =item IPC::Open2 Open a process for both reading and writing @@ -499,6 +615,10 @@ Framework for localization Article about software localization +=item Locale::Script + +ISO codes for script identification (ISO 15924) + =item Math::BigFloat Arbitrary size floating point math package @@ -551,6 +671,10 @@ Glue to provide EXISTS for SDBM_File for Storable use Store Memoized data in Storable database +=item NDBM_File + +Tied access to ndbm files + =item NEXT Provide a pseudo-class NEXT that allows method redispatch @@ -581,7 +705,7 @@ OO interface to users netrc file =item Net::POP3 -Post Office Protocol 3 Client class (RFC1081) +Post Office Protocol 3 Client class (RFC1939) =item Net::Ping @@ -615,6 +739,22 @@ By-name interface to Perl's built-in getproto*() functions By-name interface to Perl's built-in getserv*() functions +=item O + +Generic interface to Perl Compiler backends + +=item ODBM_File + +Tied access to odbm files + +=item Opcode + +Disable named opcodes when compiling perl code + +=item POSIX + +Perl interface to IEEE Std 1003.1 + =item PerlIO On demand loader for PerlIO layers and root of PerlIO::* name space @@ -691,6 +831,14 @@ Print a usage message from embedded pod documentation Test of various basic POD features in translators. +=item SDBM_File + +Tied access to sdbm files + +=item Safe + +Compile and execute code in restricted compartments + =item Search::Dict Search for key in dictionary file @@ -707,6 +855,14 @@ Load functions only on demand Run shell commands transparently within perl +=item Socket + +Load the C socket.h defines and structure manipulators + +=item Storable + +Persistency for perl data structures + =item Switch A switch statement for Perl @@ -743,6 +899,18 @@ Backend for building test libraries Run perl standard test scripts with statistics +=item Test::Harness::Assert + +Simple assert + +=item Test::Harness::Iterator + +Internal Test::Harness Iterator + +=item Test::Harness::Straps + +Detailed analysis of test results + =item Test::More Yet another framework for writing test scripts @@ -787,6 +955,10 @@ Manipulate threads in Perl Base class for tied arrays +=item Tie::File + +Access the lines of a disk file via a Perl array + =item Tie::Handle Base class definitions for tied handles @@ -795,6 +967,10 @@ Base class definitions for tied handles Base class definitions for tied hashes +=item Tie::Memoize + +Add data to hash when needed + =item Tie::RefHash Use references as hash keys diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 3e76390151..94c22077d9 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -101,8 +101,8 @@ Parentheses for capturing, Other regexp features =back -=head2 perlfaq - frequently asked questions about Perl ($Date: 2002/01/31 -04:27:54 $) +=head2 perlfaq - frequently asked questions about Perl ($Date: 2002/03/11 +21:32:23 $) =over 4 @@ -908,257 +908,258 @@ middle of a foreach loop, Can't "goto" out of a pseudo block, Can't goto subroutine from an eval-string, Can't goto subroutine outside a subroutine, Can't ignore signal CHLD, forcing to default, Can't "last" outside a loop block, Can't localize lexical variable %s, Can't localize pseudo-hash -element, Can't localize through a reference, Can't locate %s, Can't locate -auto/%s.al in @INC, Can't locate object method "%s" via package "%s", -(perhaps you forgot to load "%s"?), Can't locate package %s for @%s::ISA, -Can't make list assignment to \%ENV on this system, Can't modify %s in %s, -Can't modify nonexistent substring, Can't modify non-lvalue subroutine -call, Can't msgrcv to read-only var, Can't "next" outside a loop block, -Can't open %s: %s, Can't open bidirectional pipe, Can't open error file %s -as stderr, Can't open input file %s as stdin, Can't open output file %s as -stdout, Can't open output pipe (name: %s), Can't open perl script%s: %s, -Can't read CRTL environ, Can't redefine active sort subroutine %s, Can't -"redo" outside a loop block, Can't remove %s: %s, skipping file, Can't -rename %s to %s: %s, skipping file, Can't reopen input pipe (name: %s) in -binary mode, Can't resolve method `%s' overloading `%s' in package `%s', -Can't reswap uid and euid, Can't return %s from lvalue subroutine, Can't -return %s to lvalue scalar context, Can't return outside a subroutine, -Can't stat script "%s", Can't swap uid and euid, Can't take log of %g, -Can't take sqrt of %g, Can't undef active subroutine, Can't unshift, Can't -upgrade that kind of scalar, Can't upgrade to undef, Can't use an undefined -value as %s reference, Can't use anonymous symbol table for method lookup, -Can't use bareword ("%s") as %s ref while "strict refs" in use, Can't use -%! because Errno.pm is not available, Can't use %s for loop variable, Can't -use global %s in "my", Can't use "my %s" in sort comparison, Can't use %s -ref as %s ref, Can't use string ("%s") as %s ref while "strict refs" in -use, Can't use subscript on %s, Can't use \%c to mean $%c in expression, -Can't weaken a nonreference, Can't x= to read-only value, Character in "C" -format wrapped, Character in "c" format wrapped, close() on unopened -filehandle %s, %s: Command not found, Compilation failed in require, -Complex regular subexpression recursion limit (%d) exceeded, connect() on -closed socket %s, Constant(%s)%s: %s, Constant is not %s reference, -Constant subroutine %s redefined, Constant subroutine %s undefined, Copy -method did not return a reference, CORE::%s is not a keyword, corrupted -regexp pointers, corrupted regexp program, Corrupt malloc ptr 0x%lx at -0x%lx, C<-p> destination: %s, C<-T> and C<-B> not implemented on -filehandles, Deep recursion on subroutine "%s", defined(@array) is -deprecated, defined(%hash) is deprecated, %s defines neither package nor -VERSION--version check failed, Delimiter for here document is too long, Did -not produce a valid header, %s did not return a true value, (Did you mean -&%s instead?), (Did you mean "local" instead of "our"?), (Did you mean $ or -@ instead of %?), Died, Document contains no data, %s does not define -%s::VERSION--version check failed, Don't know how to handle magic of type -'%s', do_study: out of memory, (Do you need to predeclare %s?), dump() -better written as CORE::dump(), Duplicate free() ignored, elseif should be -elsif, Empty %s, entering effective %s failed, Error converting file -specification %s, %s: Eval-group in insecure regular expression, %s: -Eval-group not allowed at run time, %s: Eval-group not allowed, use re -'eval', Excessively long <> operator, exec? I'm not *that* kind of -operating system, Execution of %s aborted due to compilation errors, -Exiting eval via %s, Exiting format via %s, Exiting pseudo-block via %s, -Exiting subroutine via %s, Exiting substitution via %s, Explicit blessing -to '' (assuming package main), %s: Expression syntax, %s failed--call queue -aborted, False [] range "%s" in regex; marked by <-- HERE in m/%s/, Fatal -VMS error at %s, line %d, fcntl is not implemented, Filehandle %s opened -only for input, Filehandle %s opened only for output, Final $ should be \$ -or $name, Final @ should be \@ or @name, flock() on closed filehandle %s, -Quantifier follows nothing in regex;, Format not terminated, Format %s -redefined, Found = in conditional, should be ==, %s found where operator -expected, gdbm store returned %d, errno %d, key "%s", gethostent not -implemented, get%sname() on closed socket %s, getpwnam returned invalid UIC -%#o for user "%s", getsockopt() on closed socket %s, Global symbol "%s" -requires explicit package name, glob failed (%s), Glob not terminated, Got -an error from DosAllocMem, goto must have label, %s-group starts with a -count, %s had compilation errors, Had to create %s unexpectedly, Hash %%s -missing the % in argument %d of %s(), %s has too many errors, Hexadecimal -number > 0xffffffff non-portable, Identifier too long, Illegal binary digit -%s, Illegal binary digit %s ignored, Illegal character %s (carriage -return), Illegal character in prototype for %s : %s, Illegal division by -zero, Illegal hexadecimal digit %s ignored, Illegal modulus zero, Illegal -number of bits in vec, Illegal octal digit %s, Illegal octal digit %s -ignored, Illegal switch in PERL5OPT: %s, Ill-formed CRTL environ value -"%s", Ill-formed message in prime_env_iter: |%s|, (in cleanup) %s, In -EBCDIC the v-string components cannot exceed 2147483647, Insecure -dependency in %s, Insecure directory in %s, Insecure $ENV{%s} while running -%s, Integer overflow in %s number, Internal disaster in regex; marked by -<-- HERE in m/%s/, Internal inconsistency in tracking vforks, Internal urp -in regex; marked by <-- HERE in m/%s/, %s (...) interpreted as function, -Invalid %s attribute: %s, Invalid %s attributes: %s, Invalid conversion in -%s: "%s", Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/, -Invalid [] range "%s" in transliteration operator, Invalid separator -character %s in attribute list, Invalid type in pack: '%s', Invalid type in -unpack: '%s', ioctl is not implemented, ioctl() on unopened %s, -IO::Socket::atmark not implemented on this architecture, `%s' is not a code -reference, `%s' is not an overloadable type, junk on end of regexp, Label -not found for "last %s", Label not found for "next %s", Label not found for -"redo %s", leaving effective %s failed, listen() on closed socket %s, -lstat() on filehandle %s, Lvalue subs returning %s not implemented yet, -Lookbehind longer than %d not implemented in regex;, Malformed -PERLLIB_PREFIX, Malformed prototype for %s: %s, Malformed UTF-8 character -(%s), Malformed UTF-16 surrogate, %s matches null string many times in -regex;, "%s" may clash with future reserved word, % may only be used in -unpack, Method for operation %s not found in package %s during blessing, -Method %s not permitted, Might be a runaway multi-line %s string starting -on line %d, Misplaced _ in number, Missing %sbrace%s on \N{}, Missing comma -after first argument to %s function, Missing command in piped open, Missing -name in "my sub", Missing $ on loop variable, (Missing operator before -%s?), Missing right brace on %s, Missing right curly or square bracket, -(Missing semicolon on previous line?), Modification of a read-only value -attempted, Modification of non-creatable array value attempted, %s, -Modification of non-creatable hash value attempted, %s, Module name must be -constant, Module name required with -%c option, More than one argument to -open, msg%s not implemented, Multidimensional syntax %s not supported, / -must be followed by a*, A* or Z*, / must be followed by a, A or Z, / must -follow a numeric type, "my sub" not yet implemented, "my" variable %s can't -be in a package, Name "%s::%s" used only once: possible typo, Negative -length, Negative offset to vec in lvalue context, Nested quantifiers in -regex; marked by <-- HERE in m/%s/, %s never introduced, No %s allowed -while running setuid, No B<-e> allowed in setuid scripts, No comma allowed -after %s, No command into which to pipe on command line, No DB::DB routine -defined, No dbm on this machine, No DBsub routine, No error file after 2> -or 2>> on command line, No input file after < on command line, No #! line, -"no" not allowed in expression, No output file after > on command line, No -output file after > or >> on command line, No package name allowed for -variable %s in "our", No Perl script found in input, No setregid available, -No setreuid available, No space allowed after -%c, No %s specified for -%c, -No such class %s, No such pipe open, No such pseudo-hash field "%s", No -such pseudo-hash field "%s" in variable %s of type %s, No such signal: -SIG%s, Not a CODE reference, Not a format reference, Not a GLOB reference, -Not a HASH reference, Not an ARRAY reference, Not a perl script, Not a -SCALAR reference, Not a subroutine reference, Not a subroutine reference in -overload table, Not enough arguments for %s, Not enough format arguments, -%s: not found, %s not allowed in length fields, no UTC offset information; -assuming local time is UTC, Null filename used, NULL OP IN RUN, Null -picture in formline, Null realloc, NULL regexp argument, NULL regexp -parameter, Number too long, Octal number in vector unsupported, Octal -number > 037777777777 non-portable, Odd number of arguments for -overload::constant, Odd number of elements in anonymous hash, Odd number of -elements in hash assignment, Offset outside string, -%s on unopened -filehandle %s, %s() on unopened %s, oops: oopsAV, oops: oopsHV, Operation -`%s': no method found, %s, Operator or semicolon missing before %s, "our" -variable %s redeclared, Out of memory!, Out of memory during "large" -request for %s, Out of memory during request for %s, Out of memory during -ridiculously large request, Out of memory for yacc stack, @ outside of -string, %s package attribute may clash with future reserved word: %s, page -overflow, panic: %s, panic: ck_grep, panic: ck_split, panic: corrupt saved -stack index, panic: del_backref, panic: die %s, panic: pp_match%s, panic: -do_subst, panic: do_trans_%s, panic: frexp, panic: goto, panic: -INTERPCASEMOD, panic: INTERPCONCAT, panic: kid popen errno read, panic: -last, panic: leave_scope clearsv, panic: leave_scope inconsistency, panic: -magic_killbackrefs, panic: malloc, panic: mapstart, panic: null array, -panic: pad_alloc, panic: pad_free curpad, panic: pad_free po, panic: -pad_reset curpad, panic: pad_sv po, panic: pad_swipe curpad, panic: -pad_swipe po, panic: pp_iter, panic: pp_split, panic: realloc, panic: -restartop, panic: return, panic: scan_num, panic: sv_insert, panic: -top_env, panic: yylex, panic: utf16_to_utf8: odd bytelen, Parentheses -missing around "%s" list, Perl %s required--this is only version %s, -stopped, PERL_SH_DIR too long, perl: warning: Setting locale failed, -perlio: argument list not closed for layer "%s", perlio: invalid separator -character %s in attribute list, perlio: unknown layer "%s", Permission -denied, pid %x not a child, P must have an explicit size, POSIX syntax [%s] -belongs inside character classes in regex;, POSIX syntax [. .] is reserved -for future extensions in regex;, POSIX syntax [= =] is reserved for future -extensions in regex;, POSIX class [:%s:] unknown in regex;, POSIX getpgrp -can't take an argument, Possible attempt to put comments in qw() list, -Possible attempt to separate words with commas, Possible memory corruption: -%s overflowed 3rd argument, Possible unintended interpolation of %s in -string, Possible Y2K bug: %s, pragma "attrs" is deprecated, use "sub NAME : -ATTRS" instead, Precedence problem: open %s should be open(%s), Premature -end of script headers, printf() on closed filehandle %s, print() on closed -filehandle %s, Process terminated by SIG%s, Prototype mismatch: %s vs %s, -Prototype not terminated, Quantifier in {,} bigger than %d in regex;, -Quantifier unexpected on zero-length expression;, Range iterator outside -integer range, readline() on closed filehandle %s, Reallocation too large: -%lx, realloc() of freed memory ignored, Recompile perl with B<-D>DEBUGGING -to use B<-D> switch, Recursive inheritance detected in package '%s', -Recursive inheritance detected while looking for method %s, Reference found -where even-sized list expected, Reference is already weak, Reference -miscount in sv_replace(), Reference to nonexistent group in regex;, regexp -memory corruption, Regexp out of space, Repeat count in pack overflows, -Repeat count in unpack overflows, Reversed %s= operator, Runaway format, -Scalar value @%s[%s] better written as $%s[%s], Scalar value @%s{%s} better -written as $%s{%s}, Scalars leaked: %d, Script is not setuid/setgid in -suidperl, Search pattern not terminated, %sseek() on unopened filehandle, -select not implemented, Self-ties of arrays and hashes are not supported, -Semicolon seems to be missing, semi-panic: attempt to dup freed string, -sem%s not implemented, send() on closed socket %s, Sequence (? incomplete -in regex; marked by <-- HERE in m/%s/, Sequence (?{...}) not terminated or -not {}-balanced in regex;, Sequence (?%s...) not implemented in regex;, -Sequence (?%s...) not recognized in regex;, Sequence (?#... not terminated -in regex;, 500 Server error, Server error, setegid() not implemented, -seteuid() not implemented, setpgrp can't take arguments, setrgid() not -implemented, setruid() not implemented, setsockopt() on closed socket %s, -Setuid/gid script is writable by world, shm%s not implemented, <> should be -quotes, /%s/ should probably be written as "%s", shutdown() on closed -socket %s, SIG%s handler "%s" not defined, sort is now a reserved word, -Sort subroutine didn't return a numeric value, Sort subroutine didn't -return single value, splice() offset past end of array, Split loop, -Statement unlikely to be reached, stat() on unopened filehandle %s, Stub -found while resolving method `%s' overloading %s, Subroutine %s redefined, -Substitution loop, Substitution pattern not terminated, Substitution -replacement not terminated, substr outside of string, suidperl is no longer -needed since %s, Switch (?(condition)... contains too many branches in -regex;, Switch condition not recognized in regex;, switching effective %s -is not implemented, syntax error, syntax error at line %d: `%s' unexpected, -syntax error in file %s at line %d, next 2 tokens "%s", %s syntax OK, -System V %s is not implemented on this machine, syswrite() on closed -filehandle %s, Target of goto is too deeply nested, tell() on unopened -filehandle, That use of $[ is unsupported, The crypt() function is -unimplemented due to excessive paranoia, The %s function is unimplemented, -The stat preceding %s wasn't an lstat, This Perl can't reset CRTL environ -elements (%s), This Perl can't set CRTL environ elements (%s=%s), times not -implemented, Too few args to syscall, Too late for "B<-T>" option, Too late -for "-%s" option, Too late to run %s block, Too many args to syscall, Too -many arguments for %s, Too many )'s, Too many ('s, Trailing \ in regex -m/%s/, Transliteration pattern not terminated, Transliteration replacement -not terminated, truncate not implemented, Type of arg %d to %s must be %s -(not %s), umask not implemented, Unable to create sub named "%s", -Unbalanced context: %d more PUSHes than POPs, Unbalanced saves: %d more -saves than restores, Unbalanced scopes: %d more ENTERs than LEAVEs, -Unbalanced tmps: %d more allocs than frees, Undefined format "%s" called, -Undefined sort subroutine "%s" called, Undefined subroutine &%s called, -Undefined subroutine called, Undefined subroutine in sort, Undefined top -format "%s" called, Undefined value assigned to typeglob, %s: Undefined -variable, unexec of %s into %s failed!, Unicode character %s is illegal, -Unknown BYTEORDER, Unknown "re" subpragma '%s' (known ones are: %s), -Unknown switch condition (?(%.2s in regex;, Unknown open() mode '%s', -Unknown process %x sent message to prime_env_iter: %s, Unknown warnings -category '%s', unmatched [ in regex; marked by <-- HERE in m/%s/, unmatched -( in regex; marked by <-- HERE in m/%s/, Unmatched right %s bracket, -Unquoted string "%s" may clash with future reserved word, Unrecognized -character %s, /%s/: Unrecognized escape \\%c in character class passed -through, Unrecognized escape \\%c passed through in regex;, Unrecognized -escape \\%c passed through, Unrecognized signal name "%s", Unrecognized -switch: -%s (-h will show valid options), Unsuccessful %s on filename -containing newline, Unsupported directory function "%s" called, Unsupported -function %s, Unsupported function fork, Unsupported script encoding, -Unsupported socket function "%s" called, Unterminated attribute list, -Unterminated attribute parameter in attribute list, Unterminated compressed -integer, Unterminated <> operator, untie attempted while %d inner -references still exist, Useless (?%s) - use /%s modifier in regex;, Useless -(?-%s) - don't use /%s modifier in regex;, Useless use of %s in void -context, Useless use of "re" pragma, Useless use of sort in scalar context, -Useless use of %s with no values, "use" not allowed in expression, Use of -bare << to mean <<"" is deprecated, Use of *glob{FILEHANDLE} is deprecated, -Use of chdir('') or chdir(undef) as chdir() deprecated, Use of implicit -split to @_ is deprecated, Use of inherited AUTOLOAD for non-method %s() is -deprecated, Use of -l on filehandle %s, Use of "package" with no arguments -is deprecated, Use of %s in printf format not supported, Use of $* is -deprecated, Use of %s is deprecated, Use of $# is deprecated, Use of -reference "%s" as array index, Use of reserved word "%s" is deprecated, Use -of tainted arguments in %s is deprecated, Use of uninitialized value%s, -Using a hash as a reference is deprecated, Using an array as a reference is -deprecated, UTF-16 surrogate %s, Value of %s can be "0"; test with -defined(), Value of CLI symbol "%s" too long, Variable "%s" is not -imported%s, "%s" variable %s masks earlier declaration in same %s, Variable -"%s" may be unavailable, Variable syntax, Variable "%s" will not stay -shared, Variable length lookbehind not implemented in regex;, Version -number must be a constant number, v-string in use/require is non-portable, -Warning: something's wrong, Warning: unable to close filehandle %s -properly, Warning: Use of "%s" without parentheses is ambiguous, Wide -character in %s, write() on closed filehandle %s, X outside of string, x -outside of string, Xsub "%s" called in sort, Xsub called in sort, YOU -HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!, You need to quote "%s" +element, Can't localize through a reference, Can't locate file %s, Can't +locate auto/%s.al in @INC, Can't locate object method "%s" via package +"%s", (perhaps you forgot to load "%s"?), Can't locate package %s for +@%s::ISA, Can't make list assignment to \%ENV on this system, Can't modify +%s in %s, Can't modify nonexistent substring, Can't modify non-lvalue +subroutine call, Can't msgrcv to read-only var, Can't "next" outside a loop +block, Can't open %s: %s, Can't open bidirectional pipe, Can't open error +file %s as stderr, Can't open input file %s as stdin, Can't open output +file %s as stdout, Can't open output pipe (name: %s), Can't open perl +script%s: %s, Can't read CRTL environ, Can't redefine active sort +subroutine %s, Can't "redo" outside a loop block, Can't remove %s: %s, +skipping file, Can't rename %s to %s: %s, skipping file, Can't reopen input +pipe (name: %s) in binary mode, Can't resolve method `%s' overloading `%s' +in package `%s', Can't reswap uid and euid, Can't return %s from lvalue +subroutine, Can't return %s to lvalue scalar context, Can't return outside +a subroutine, Can't stat script "%s", Can't swap uid and euid, Can't take +log of %g, Can't take sqrt of %g, Can't undef active subroutine, Can't +unshift, Can't upgrade that kind of scalar, Can't upgrade to undef, Can't +use an undefined value as %s reference, Can't use anonymous symbol table +for method lookup, Can't use bareword ("%s") as %s ref while "strict refs" +in use, Can't use %! because Errno.pm is not available, Can't use %s for +loop variable, Can't use global %s in "my", Can't use "my %s" in sort +comparison, Can't use %s ref as %s ref, Can't use string ("%s") as %s ref +while "strict refs" in use, Can't use subscript on %s, Can't use \%c to +mean $%c in expression, Can't weaken a nonreference, Can't x= to read-only +value, Character in "C" format wrapped, Character in "c" format wrapped, +close() on unopened filehandle %s, %s: Command not found, Compilation +failed in require, Complex regular subexpression recursion limit (%d) +exceeded, connect() on closed socket %s, Constant(%s)%s: %s, Constant is +not %s reference, Constant subroutine %s redefined, Constant subroutine %s +undefined, Copy method did not return a reference, CORE::%s is not a +keyword, corrupted regexp pointers, corrupted regexp program, Corrupt +malloc ptr 0x%lx at 0x%lx, C<-p> destination: %s, C<-T> and C<-B> not +implemented on filehandles, Deep recursion on subroutine "%s", +defined(@array) is deprecated, defined(%hash) is deprecated, %s defines +neither package nor VERSION--version check failed, Delimiter for here +document is too long, Did not produce a valid header, %s did not return a +true value, (Did you mean &%s instead?), (Did you mean "local" instead of +"our"?), (Did you mean $ or @ instead of %?), Died, Document contains no +data, %s does not define %s::VERSION--version check failed, Don't know how +to handle magic of type '%s', do_study: out of memory, (Do you need to +predeclare %s?), dump() better written as CORE::dump(), Duplicate free() +ignored, elseif should be elsif, Empty %s, entering effective %s failed, +Error converting file specification %s, %s: Eval-group in insecure regular +expression, %s: Eval-group not allowed at run time, %s: Eval-group not +allowed, use re 'eval', Excessively long <> operator, exec? I'm not *that* +kind of operating system, Execution of %s aborted due to compilation +errors, Exiting eval via %s, Exiting format via %s, Exiting pseudo-block +via %s, Exiting subroutine via %s, Exiting substitution via %s, Explicit +blessing to '' (assuming package main), %s: Expression syntax, %s +failed--call queue aborted, False [] range "%s" in regex; marked by <-- +HERE in m/%s/, Fatal VMS error at %s, line %d, fcntl is not implemented, +Filehandle %s opened only for input, Filehandle %s opened only for output, +Final $ should be \$ or $name, Final @ should be \@ or @name, flock() on +closed filehandle %s, Quantifier follows nothing in regex;, Format not +terminated, Format %s redefined, Found = in conditional, should be ==, %s +found where operator expected, gdbm store returned %d, errno %d, key "%s", +gethostent not implemented, get%sname() on closed socket %s, getpwnam +returned invalid UIC %#o for user "%s", getsockopt() on closed socket %s, +Global symbol "%s" requires explicit package name, glob failed (%s), Glob +not terminated, Got an error from DosAllocMem, goto must have label, +%s-group starts with a count, %s had compilation errors, Had to create %s +unexpectedly, Hash %%s missing the % in argument %d of %s(), %s has too +many errors, Hexadecimal number > 0xffffffff non-portable, Identifier too +long, Illegal binary digit %s, Illegal binary digit %s ignored, Illegal +character %s (carriage return), Illegal character in prototype for %s : %s, +Illegal division by zero, Illegal hexadecimal digit %s ignored, Illegal +modulus zero, Illegal number of bits in vec, Illegal octal digit %s, +Illegal octal digit %s ignored, Illegal switch in PERL5OPT: %s, Ill-formed +CRTL environ value "%s", Ill-formed message in prime_env_iter: |%s|, (in +cleanup) %s, In EBCDIC the v-string components cannot exceed 2147483647, +Insecure dependency in %s, Insecure directory in %s, Insecure $ENV{%s} +while running %s, Integer overflow in %s number, Internal disaster in +regex; marked by <-- HERE in m/%s/, Internal inconsistency in tracking +vforks, Internal urp in regex; marked by <-- HERE in m/%s/, %s (...) +interpreted as function, Invalid %s attribute: %s, Invalid %s attributes: +%s, Invalid conversion in %s: "%s", Invalid [] range "%s" in regex; marked +by <-- HERE in m/%s/, Invalid [] range "%s" in transliteration operator, +Invalid separator character %s in attribute list, Invalid type in pack: +'%s', Invalid type in unpack: '%s', ioctl is not implemented, ioctl() on +unopened %s, IO::Socket::atmark not implemented on this architecture, `%s' +is not a code reference, `%s' is not an overloadable type, junk on end of +regexp, Label not found for "last %s", Label not found for "next %s", Label +not found for "redo %s", leaving effective %s failed, listen() on closed +socket %s, lstat() on filehandle %s, Lvalue subs returning %s not +implemented yet, Lookbehind longer than %d not implemented in regex;, +Malformed PERLLIB_PREFIX, Malformed prototype for %s: %s, Malformed UTF-8 +character (%s), Malformed UTF-16 surrogate, %s matches null string many +times in regex;, "%s" may clash with future reserved word, % may only be +used in unpack, Method for operation %s not found in package %s during +blessing, Method %s not permitted, Might be a runaway multi-line %s string +starting on line %d, Misplaced _ in number, Missing %sbrace%s on \N{}, +Missing comma after first argument to %s function, Missing command in piped +open, Missing name in "my sub", Missing $ on loop variable, (Missing +operator before %s?), Missing right brace on %s, Missing right curly or +square bracket, (Missing semicolon on previous line?), Modification of a +read-only value attempted, Modification of non-creatable array value +attempted, %s, Modification of non-creatable hash value attempted, %s, +Module name must be constant, Module name required with -%c option, More +than one argument to open, msg%s not implemented, Multidimensional syntax +%s not supported, / must be followed by a*, A* or Z*, / must be followed by +a, A or Z, / must follow a numeric type, "my sub" not yet implemented, "my" +variable %s can't be in a package, Name "%s::%s" used only once: possible +typo, Negative length, Negative offset to vec in lvalue context, Nested +quantifiers in regex; marked by <-- HERE in m/%s/, %s never introduced, No +%s allowed while running setuid, No B<-e> allowed in setuid scripts, No +comma allowed after %s, No command into which to pipe on command line, No +DB::DB routine defined, No dbm on this machine, No DBsub routine, No error +file after 2> or 2>> on command line, No input file after < on command +line, No #! line, "no" not allowed in expression, No output file after > on +command line, No output file after > or >> on command line, No package name +allowed for variable %s in "our", No Perl script found in input, No +setregid available, No setreuid available, No space allowed after -%c, No +%s specified for -%c, No such class %s, No such pipe open, No such +pseudo-hash field "%s", No such pseudo-hash field "%s" in variable %s of +type %s, No such signal: SIG%s, Not a CODE reference, Not a format +reference, Not a GLOB reference, Not a HASH reference, Not an ARRAY +reference, Not a perl script, Not a SCALAR reference, Not a subroutine +reference, Not a subroutine reference in overload table, Not enough +arguments for %s, Not enough format arguments, %s: not found, %s not +allowed in length fields, no UTC offset information; assuming local time is +UTC, Null filename used, NULL OP IN RUN, Null picture in formline, Null +realloc, NULL regexp argument, NULL regexp parameter, Number too long, +Octal number in vector unsupported, Octal number > 037777777777 +non-portable, Odd number of arguments for overload::constant, Odd number of +elements in anonymous hash, Odd number of elements in hash assignment, +Offset outside string, -%s on unopened filehandle %s, %s() on unopened %s, +oops: oopsAV, oops: oopsHV, Operation `%s': no method found, %s, Operator +or semicolon missing before %s, "our" variable %s redeclared, Out of +memory!, Out of memory during "large" request for %s, Out of memory during +request for %s, Out of memory during ridiculously large request, Out of +memory for yacc stack, @ outside of string, %s package attribute may clash +with future reserved word: %s, page overflow, panic: %s, panic: ck_grep, +panic: ck_split, panic: corrupt saved stack index, panic: del_backref, +panic: die %s, panic: pp_match%s, panic: do_subst, panic: do_trans_%s, +panic: frexp, panic: goto, panic: INTERPCASEMOD, panic: INTERPCONCAT, +panic: kid popen errno read, panic: last, panic: leave_scope clearsv, +panic: leave_scope inconsistency, panic: magic_killbackrefs, panic: malloc, +panic: mapstart, panic: null array, panic: pad_alloc, panic: pad_free +curpad, panic: pad_free po, panic: pad_reset curpad, panic: pad_sv po, +panic: pad_swipe curpad, panic: pad_swipe po, panic: pp_iter, panic: +pp_split, panic: realloc, panic: restartop, panic: return, panic: scan_num, +panic: sv_insert, panic: top_env, panic: yylex, panic: utf16_to_utf8: odd +bytelen, Parentheses missing around "%s" list, Perl %s required--this is +only version %s, stopped, PERL_SH_DIR too long, perl: warning: Setting +locale failed, perlio: argument list not closed for layer "%s", perlio: +invalid separator character %s in attribute list, perlio: unknown layer +"%s", Permission denied, pid %x not a child, P must have an explicit size, +POSIX syntax [%s] belongs inside character classes in regex;, POSIX syntax +[. .] is reserved for future extensions in regex;, POSIX syntax [= =] is +reserved for future extensions in regex;, POSIX class [:%s:] unknown in +regex;, POSIX getpgrp can't take an argument, Possible attempt to put +comments in qw() list, Possible attempt to separate words with commas, +Possible memory corruption: %s overflowed 3rd argument, Possible unintended +interpolation of %s in string, Possible Y2K bug: %s, pragma "attrs" is +deprecated, use "sub NAME : ATTRS" instead, Precedence problem: open %s +should be open(%s), Premature end of script headers, printf() on closed +filehandle %s, print() on closed filehandle %s, Process terminated by +SIG%s, Prototype mismatch: %s vs %s, Prototype not terminated, Quantifier +in {,} bigger than %d in regex;, Quantifier unexpected on zero-length +expression;, Range iterator outside integer range, readline() on closed +filehandle %s, Reallocation too large: %lx, realloc() of freed memory +ignored, Recompile perl with B<-D>DEBUGGING to use B<-D> switch, Recursive +inheritance detected in package '%s', Recursive inheritance detected while +looking for method %s, Reference found where even-sized list expected, +Reference is already weak, Reference miscount in sv_replace(), Reference to +nonexistent group in regex;, regexp memory corruption, Regexp out of space, +Repeat count in pack overflows, Repeat count in unpack overflows, Reversed +%s= operator, Runaway format, Scalar value @%s[%s] better written as +$%s[%s], Scalar value @%s{%s} better written as $%s{%s}, Scalars leaked: +%d, Script is not setuid/setgid in suidperl, Search pattern not terminated, +%sseek() on unopened filehandle, select not implemented, Self-ties of +arrays and hashes are not supported, Semicolon seems to be missing, +semi-panic: attempt to dup freed string, sem%s not implemented, send() on +closed socket %s, Sequence (? incomplete in regex; marked by <-- HERE in +m/%s/, Sequence (?{...}) not terminated or not {}-balanced in regex;, +Sequence (?%s...) not implemented in regex;, Sequence (?%s...) not +recognized in regex;, Sequence (?#... not terminated in regex;, 500 Server +error, Server error, setegid() not implemented, seteuid() not implemented, +setpgrp can't take arguments, setrgid() not implemented, setruid() not +implemented, setsockopt() on closed socket %s, Setuid/gid script is +writable by world, shm%s not implemented, <> should be quotes, /%s/ should +probably be written as "%s", shutdown() on closed socket %s, SIG%s handler +"%s" not defined, sort is now a reserved word, Sort subroutine didn't +return a numeric value, Sort subroutine didn't return single value, +splice() offset past end of array, Split loop, Statement unlikely to be +reached, stat() on unopened filehandle %s, Stub found while resolving +method `%s' overloading %s, Subroutine %s redefined, Substitution loop, +Substitution pattern not terminated, Substitution replacement not +terminated, substr outside of string, suidperl is no longer needed since +%s, Switch (?(condition)... contains too many branches in regex;, Switch +condition not recognized in regex;, switching effective %s is not +implemented, syntax error, syntax error at line %d: `%s' unexpected, syntax +error in file %s at line %d, next 2 tokens "%s", %s syntax OK, System V %s +is not implemented on this machine, syswrite() on closed filehandle %s, +Target of goto is too deeply nested, tell() on unopened filehandle, That +use of $[ is unsupported, The crypt() function is unimplemented due to +excessive paranoia, The %s function is unimplemented, The stat preceding %s +wasn't an lstat, This Perl can't reset CRTL environ elements (%s), This +Perl can't set CRTL environ elements (%s=%s), times not implemented, Too +few args to syscall, Too late for "B<-T>" option, Too late for "-%s" +option, Too late to run %s block, Too many args to syscall, Too many +arguments for %s, Too many )'s, Too many ('s, Trailing \ in regex m/%s/, +Transliteration pattern not terminated, Transliteration replacement not +terminated, truncate not implemented, Type of arg %d to %s must be %s (not +%s), umask not implemented, Unable to create sub named "%s", Unbalanced +context: %d more PUSHes than POPs, Unbalanced saves: %d more saves than +restores, Unbalanced scopes: %d more ENTERs than LEAVEs, Unbalanced tmps: +%d more allocs than frees, Undefined format "%s" called, Undefined sort +subroutine "%s" called, Undefined subroutine &%s called, Undefined +subroutine called, Undefined subroutine in sort, Undefined top format "%s" +called, Undefined value assigned to typeglob, %s: Undefined variable, +unexec of %s into %s failed!, Unicode character %s is illegal, Unknown +BYTEORDER, Unknown "re" subpragma '%s' (known ones are: %s), Unknown switch +condition (?(%.2s in regex;, Unknown open() mode '%s', Unknown process %x +sent message to prime_env_iter: %s, Unknown warnings category '%s', +unmatched [ in regex; marked by <-- HERE in m/%s/, unmatched ( in regex; +marked by <-- HERE in m/%s/, Unmatched right %s bracket, Unquoted string +"%s" may clash with future reserved word, Unrecognized character %s, /%s/: +Unrecognized escape \\%c in character class passed through, Unrecognized +escape \\%c passed through in regex;, Unrecognized escape \\%c passed +through, Unrecognized signal name "%s", Unrecognized switch: -%s (-h will +show valid options), Unsuccessful %s on filename containing newline, +Unsupported directory function "%s" called, Unsupported function %s, +Unsupported function fork, Unsupported script encoding, Unsupported socket +function "%s" called, Unterminated attribute list, Unterminated attribute +parameter in attribute list, Unterminated compressed integer, Unterminated +<> operator, untie attempted while %d inner references still exist, Useless +(?%s) - use /%s modifier in regex;, Useless (?-%s) - don't use /%s modifier +in regex;, Useless use of %s in void context, Useless use of "re" pragma, +Useless use of sort in scalar context, Useless use of %s with no values, +"use" not allowed in expression, Use of bare << to mean <<"" is deprecated, +Use of *glob{FILEHANDLE} is deprecated, Use of chdir('') or chdir(undef) as +chdir() deprecated, Use of implicit split to @_ is deprecated, Use of +inherited AUTOLOAD for non-method %s() is deprecated, Use of -l on +filehandle %s, Use of "package" with no arguments is deprecated, Use of %s +in printf format not supported, Use of $* is deprecated, Use of %s is +deprecated, Use of $# is deprecated, Use of reference "%s" as array index, +Use of reserved word "%s" is deprecated, Use of tainted arguments in %s is +deprecated, Use of uninitialized value%s, Using a hash as a reference is +deprecated, Using an array as a reference is deprecated, UTF-16 surrogate +%s, Value of %s can be "0"; test with defined(), Value of CLI symbol "%s" +too long, Variable "%s" is not imported%s, "%s" variable %s masks earlier +declaration in same %s, Variable "%s" may be unavailable, Variable syntax, +Variable "%s" will not stay shared, Variable length lookbehind not +implemented in regex;, Version number must be a constant number, v-string +in use/require is non-portable, Warning: something's wrong, Warning: unable +to close filehandle %s properly, Warning: Use of "%s" without parentheses +is ambiguous, Wide character in %s, write() on closed filehandle %s, X +outside of string, x outside of string, Xsub "%s" called in sort, Xsub +called in sort, YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET!, You +need to quote "%s" =back @@ -3000,8 +3001,8 @@ tarball, Announce to the modules list, Announce to clpa, Fix bugs! =back -=head2 perlfaq1 - General Questions About Perl ($Revision: 1.6 $, $Date: -2002/01/31 01:46:23 $) +=head2 perlfaq1 - General Questions About Perl ($Revision: 1.7 $, $Date: +2002/02/21 14:49:15 $) =over 4 @@ -3047,8 +3048,8 @@ Scheme, or Tcl? =back -=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.8 $, -$Date: 2002/02/08 22:31:57 $) +=head2 perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.9 $, +$Date: 2002/03/09 21:01:13 $) =over 4 @@ -3188,8 +3189,8 @@ my C program; what am I doing wrong? =back -=head2 perlfaq4 - Data Manipulation ($Revision: 1.14 $, $Date: 2002/02/08 -22:30:23 $) +=head2 perlfaq4 - Data Manipulation ($Revision: 1.19 $, $Date: 2002/03/11 +22:15:19 $) =over 4 @@ -3224,6 +3225,8 @@ decimal:>, B<How do I convert from decimal to binary:> =item Why aren't my random numbers random? +=item How do I get a random number between X and Y? + =back =item Data: Dates @@ -3403,8 +3406,8 @@ array of hashes or arrays? =back -=head2 perlfaq5 - Files and Formats ($Revision: 1.9 $, $Date: 2002/02/11 -19:30:21 $) +=head2 perlfaq5 - Files and Formats ($Revision: 1.12 $, $Date: 2002/03/11 +22:25:25 $) =over 4 @@ -3478,7 +3481,7 @@ file. Do I still have to use locking? =item How do I close a file descriptor by number? -=item Why can't I use "C:\temp\foo" in DOS paths? What doesn't +=item Why can't I use "C:\temp\foo" in DOS paths? Why doesn't `C:\temp\foo.exe` work? =item Why doesn't glob("*.*") get all the files? @@ -7325,6 +7328,50 @@ Source, Compiled Module Source, Perl Modules/Scripts =back +=head2 perldos - Perl under DOS, W31, W95. + +=over 4 + +=item SYNOPSIS + +=item DESCRIPTION + +=over 4 + +=item Prerequisites for Compiling Perl on DOS + +DJGPP, Pthreads + +=item Shortcomings of Perl under DOS + +=item Building Perl on DOS + +=item Testing Perl on DOS + +=item Installation of Perl on DOS + +=back + +=item BUILDING AND INSTALLING MODULES ON DOS + +=over 4 + +=item Building Prerequisites for Perl on DOS + +=item Unpacking CPAN Modules on DOS + +=item Building Non-XS Modules on DOS + +=item Building XS Modules on DOS + +=back + +=item AUTHOR + +=item SEE ALSO + +=back + =head2 perlepoc, README.epoc - Perl for EPOC =over 4 @@ -8905,7 +8952,7 @@ code =item Utility functions $num_octets = utf8::upgrade($string);, utf8::downgrade($string[, CHECK]), -utf8::encode($string) +utf8::encode($string), $flag = utf8::decode($string) =back @@ -10835,70 +10882,6 @@ Dumper =back -=head2 Data::Util - A selection of general-utility data subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -sv_readonly_flag - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Data::Utilib::Data::Util, Data::Util - A selection of -general-utility data subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -sv_readonly_flag - -=item AUTHOR - -=item SEE ALSO - -=back - -=head2 Data::Utilib::Hash::Util, Hash::Util - A selection of -general-utility hash subroutines - -=over 4 - -=item SYNOPSIS - -=item DESCRIPTION - -=over 4 - -=item Restricted hashes - -lock_keys, unlock_keys - -=back - -=back - -lock_value, unlock_value - -B<lock_hash>, B<unlock_hash> - -=over 4 - -=item AUTHOR - -=item SEE ALSO - -=back - =head2 Devel::DProf - a Perl code profiler =over 4 @@ -3155,7 +3155,7 @@ PP(pp_require) SvREFCNT_dec(dirmsgsv); msgstr = SvPV_nolen(msg); } - DIE(aTHX_ "Can't locate %s", msgstr); + DIE(aTHX_ "Can't locate file %s", msgstr); } RETPUSHUNDEF; diff --git a/t/op/override.t b/t/op/override.t index 1a4e5e02f8..e9e62a0e85 100755 --- a/t/op/override.t +++ b/t/op/override.t @@ -67,7 +67,7 @@ print "ok 10\n"; local(*CORE::GLOBAL::require); $r = ''; eval "require NoNeXiSt;"; - print "not " if $r or $@ !~ /^Can't locate NoNeXiSt/i; + print "not " if $r or $@ !~ /^Can't locate file NoNeXiSt/i; print "ok 11\n"; } @@ -2570,9 +2570,6 @@ Perl_yylex(pTHX) } } if (PL_doextract) { - if (*s == '#' && s[1] == '!' && instr(s,"perl")) - PL_doextract = FALSE; - /* Incest with pod. */ if (*s == '=' && strnEQ(s, "=cut", 4)) { sv_setpv(PL_linestr, ""); diff --git a/universal.c b/universal.c index ae12e27984..85a09161d2 100644 --- a/universal.c +++ b/universal.c @@ -167,6 +167,8 @@ XS(XS_utf8_upgrade); XS(XS_utf8_downgrade); XS(XS_utf8_unicode_to_native); XS(XS_utf8_native_to_unicode); +XS(XS_Internals_SvREADONLY); +XS(XS_Internals_SvREFCNT); void Perl_boot_core_UNIVERSAL(pTHX) @@ -183,6 +185,8 @@ Perl_boot_core_UNIVERSAL(pTHX) newXS("utf8::downgrade", XS_utf8_downgrade, file); newXS("utf8::native_to_unicode", XS_utf8_native_to_unicode, file); newXS("utf8::unicode_to_native", XS_utf8_unicode_to_native, file); + newXSproto("Internals::SvREADONLY",XS_Internals_SvREADONLY, file, "\\[$%@];$"); + newXSproto("Internals::SvREFCNT",XS_Internals_SvREFCNT, file, "\\[$%@];$"); } @@ -458,3 +462,41 @@ XS(XS_utf8_unicode_to_native) XSRETURN(1); } +XS(XS_Internals_SvREADONLY) /* This is dangerous stuff. */ +{ + dXSARGS; + SV *sv = SvRV(ST(0)); + if (items == 1) { + if (SvREADONLY(sv)) + XSRETURN_YES; + else + XSRETURN_NO; + } + else if (items == 2) { + if (SvTRUE(ST(1))) { + SvREADONLY_on(sv); + XSRETURN_YES; + } + else { + /* I hope you really know what you are doing. */ + SvREADONLY_off(sv); + XSRETURN_NO; + } + } + XSRETURN_UNDEF; /* Can't happen. */ +} + +XS(XS_Internals_SvREFCNT) /* This is dangerous stuff. */ +{ + dXSARGS; + SV *sv = SvRV(ST(0)); + if (items == 1) + XSRETURN_IV(SvREFCNT(sv) - 1); /* Minus the ref created for us. */ + else if (items == 2) { + /* I hope you really know what you are doing. */ + SvREFCNT(sv) = SvIV(ST(1)); + XSRETURN_IV(SvREFCNT(sv)); + } + XSRETURN_UNDEF; /* Can't happen. */ +} + |