In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/f7223e8e1a4c8ac13f56c6da4f523e8bfe828dc0?hp=0e637710e635c1f42e13242e1ea416e9304090f6>
- Log ----------------------------------------------------------------- commit f7223e8e1a4c8ac13f56c6da4f523e8bfe828dc0 Author: Rafael Garcia-Suarez <[email protected]> Date: Sat Jun 27 17:18:52 2009 +0200 Adjustments to t/pod/diag.t M t/pod/diag.t commit 87a63fff814bea4d594840ceb735b2807e76f5f9 Author: James Mastros <[email protected]> Date: Mon Jun 22 16:09:18 2009 +0100 Add support for TODO diag tests -- a list in DATA of error messages that are allowed to not be in perldiag.pod without it being a 'not ok', just a 'ok # TODO', and populate the DATA section with the current ones. M t/pod/diag.t commit fe13d51d6409065a0214793b416a2eb3fe209949 Author: James Mastros <[email protected]> Date: Sat Jun 6 20:46:21 2009 +0100 Add test to make sure everything that outputs an exception or warning has a matching entry in perldiag (and fix it so that more of the existing ones do). M doio.c M gv.c M mg.c M op.c M perl.h M pod/perldiag.pod M sv.c A t/pod/diag.t ----------------------------------------------------------------------- Summary of changes: doio.c | 11 ++ gv.c | 2 + mg.c | 2 +- op.c | 3 +- perl.h | 1 + pod/perldiag.pod | 28 ++-- sv.c | 4 +- t/pod/diag.t | 383 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 416 insertions(+), 18 deletions(-) create mode 100644 t/pod/diag.t diff --git a/doio.c b/doio.c index 8a12268..7be7af1 100644 --- a/doio.c +++ b/doio.c @@ -312,6 +312,7 @@ Perl_do_openn(pTHX_ GV *gv, register const char *oname, I32 len, int as_raw, else { PerlIO *that_fp = NULL; if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ Perl_croak(aTHX_ "More than one argument to '%c&' open",IoTYPE(io)); } while (isSPACE(*type)) @@ -398,6 +399,7 @@ Perl_do_openn(pTHX_ GV *gv, register const char *oname, I32 len, int as_raw, fp = PerlIO_stdout(); IoTYPE(io) = IoTYPE_STD; if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ Perl_croak(aTHX_ "More than one argument to '>%c' open",IoTYPE_STD); } } @@ -431,6 +433,7 @@ Perl_do_openn(pTHX_ GV *gv, register const char *oname, I32 len, int as_raw, fp = PerlIO_stdin(); IoTYPE(io) = IoTYPE_STD; if (num_svs > 1) { + /* diag_listed_as: More than one argument to '%s' open */ Perl_croak(aTHX_ "More than one argument to '<%c' open",IoTYPE_STD); } } @@ -1997,6 +2000,7 @@ Perl_do_ipcget(pTHX_ I32 optype, SV **mark, SV **sp) #endif #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM) default: + /* diag_listed_as: msg%s not implemented */ Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } @@ -2057,12 +2061,14 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp) than guessing about u_?short(_t)? */ } #else + /* diag_listed_as: sem%s not implemented */ Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif break; #endif #if !defined(HAS_MSG) || !defined(HAS_SEM) || !defined(HAS_SHM) default: + /* diag_listed_as: shm%s not implemented */ Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } @@ -2110,6 +2116,7 @@ Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp) #endif ret = Semctl(id, n, cmd, unsemds); #else + /* diag_listed_as: sem%s not implemented */ Perl_croak(aTHX_ "%s not implemented", PL_op_desc[optype]); #endif } @@ -2151,6 +2158,7 @@ Perl_do_msgsnd(pTHX_ SV **mark, SV **sp) #else PERL_UNUSED_ARG(sp); PERL_UNUSED_ARG(mark); + /* diag_listed_as: msg%s not implemented */ Perl_croak(aTHX_ "msgsnd not implemented"); #endif } @@ -2192,6 +2200,7 @@ Perl_do_msgrcv(pTHX_ SV **mark, SV **sp) #else PERL_UNUSED_ARG(sp); PERL_UNUSED_ARG(mark); + /* diag_listed_as: msg%s not implemented */ Perl_croak(aTHX_ "msgrcv not implemented"); #endif } @@ -2246,6 +2255,7 @@ Perl_do_semop(pTHX_ SV **mark, SV **sp) return result; } #else + /* diag_listed_as: sem%s not implemented */ Perl_croak(aTHX_ "semop not implemented"); #endif } @@ -2304,6 +2314,7 @@ Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp) } return shmdt(shm); #else + /* diag_listed_as: shm%s not implemented */ Perl_croak(aTHX_ "shm I/O not implemented"); #endif } diff --git a/gv.c b/gv.c index 549d672..24e11c1 100644 --- a/gv.c +++ b/gv.c @@ -99,6 +99,7 @@ Perl_gv_IOadd(pTHX_ register GV *gv) PL_op->op_type == OP_REWINDDIR || PL_op->op_type == OP_CLOSEDIR ? "dirhandle" : "filehandle"; + /* diag_listed_as: Bad symbol for filehandle */ Perl_croak(aTHX_ "Bad symbol for %s", fh); } @@ -1087,6 +1088,7 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) || (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) ) { + /* diag_listed_as: Variable "%s" is not imported%s */ Perl_warn(aTHX_ "Variable \"%c%s\" is not imported", sv_type == SVt_PVAV ? '@' : sv_type == SVt_PVHV ? '%' : '$', diff --git a/mg.c b/mg.c index 05a5092..5cfa8cb 100644 --- a/mg.c +++ b/mg.c @@ -1331,7 +1331,7 @@ Perl_csighandler(int sig) #ifndef SIG_PENDING_DIE_COUNT # define SIG_PENDING_DIE_COUNT 120 #endif - /* And one to say _a_ signal is pending */ + /* Add one to say _a_ signal is pending */ if (++PL_sig_pending >= SIG_PENDING_DIE_COUNT) Perl_croak(aTHX_ "Maximal count of pending signals (%lu) exceeded", (unsigned long)SIG_PENDING_DIE_COUNT); diff --git a/op.c b/op.c index 7488887..03fe906 100644 --- a/op.c +++ b/op.c @@ -3857,7 +3857,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg) SV *meth; if (version->op_type != OP_CONST || !SvNIOKp(vesv)) - Perl_croak(aTHX_ "Version number must be constant number"); + Perl_croak(aTHX_ "Version number must be a constant number"); /* Make copy of idop so we don't free it twice */ pack = newSVOP(OP_CONST, 0, newSVsv(((SVOP*)idop)->op_sv)); @@ -8961,6 +8961,7 @@ const_sv_xsub(pTHX_ CV* cv) if (items != 0) { NOOP; #if 0 + /* diag_listed_as: SKIPME */ Perl_croak(aTHX_ "usage: %s::%s()", HvNAME_get(GvSTASH(CvGV(cv))), GvNAME(CvGV(cv))); #endif diff --git a/perl.h b/perl.h index 4f4130e..5b221fa 100644 --- a/perl.h +++ b/perl.h @@ -1027,6 +1027,7 @@ EXTERN_C int usleep(unsigned int); # define MALLOC_CHECK_TAINT(argc,argv,env) #endif /* MYMALLOC */ +/* diag_listed_as: "-T" is on the #! line, it must also be used on the command line */ #define TOO_LATE_FOR_(ch,what) Perl_croak(aTHX_ "\"-%c\" is on the #! line, it must also be used on the command line%s", (char)(ch), what) #define TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, "") #define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}") diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 9f13d6e..0b3dc3b 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -320,7 +320,7 @@ attribute on a array, hash or scalar reference. The :unique attribute is has had no no effect since Perl 5.8.8, and will be removed in the next major release of Perl 5. -=item Bad arg length for %s, is %d, should be %s +=item Bad arg length for %s, is %d, should be %d (F) You passed a buffer of the wrong size to one of msgctl(), semctl() or shmctl(). In C parlance, the correct sizes are, respectively, @@ -1032,7 +1032,7 @@ probably because you don't have write permission to the directory. (P) An error peculiar to VMS. Perl thought stdin was a pipe, and tried to reopen it to accept binary data. Alas, it failed. -=item Can't resolve method `%s' overloading `%s' in package `%s' +=item Can't resolve method "%s" overloading "%s" in package "%s" (F|P) Error resolving overloading specified by a method name (as opposed to a subroutine reference): no such method callable via the package. If @@ -1618,7 +1618,7 @@ variable and glob that. (F) The C<exec> function is not implemented in MacPerl. See L<perlport>. -=item Execution of %s aborted due to compilation errors +=item Execution of %s aborted due to compilation errors. (F) The final summary message when a Perl compilation fails. @@ -1842,7 +1842,7 @@ unspecified destination. See L<perlfunc/goto>. supposed to follow something: a template character or a ()-group. See L<perlfunc/pack>. -=item %s had compilation errors +=item %s had compilation errors. (F) The final summary message when a C<perl -c> fails. @@ -1945,7 +1945,7 @@ two from 1 to 32 (or 64, if your platform supports that). (W digit) You may have tried to use an 8 or 9 in an octal number. Interpretation of the octal number stopped before the 8 or 9. -=item Illegal switch in PERL5OPT: %s +=item Illegal switch in PERL5OPT: -%c (X) The PERL5OPT environment variable may only be used to set the following switches: B<-[CDIMUdmtw]>. @@ -2167,7 +2167,7 @@ strange for a machine that supports C. (W unopened) You tried ioctl() on a filehandle that was never opened. Check you control flow and number of arguments. -=item IO layers (like "%s") unavailable +=item IO layers (like '%s') unavailable (F) Your Perl has not been configured to have PerlIO, and therefore you cannot use IO layers. To have PerlIO Perl must be configured @@ -2333,9 +2333,9 @@ rules and perl was unable to guess how to make more progress. (F) You tried to unpack something that didn't comply with UTF-8 encoding rules and perl was unable to guess how to make more progress. -=item Maximal count of pending signals (%s) exceeded +=item Maximal count of pending signals (%d) exceeded -(F) Perl aborted due to a too important number of signals pending. This +(F) Perl aborted due to a too high number of signals pending. This usually indicates that your operating system tried to deliver signals too fast (with a very high priority), starving the perl process from resources it would need to reach a point where it can process signals @@ -2478,7 +2478,7 @@ couldn't be created for some peculiar reason. you omitted the name of the module. Consult L<perlrun> for full details about C<-M> and C<-m>. -=item More than one argument to open +=item More than one argument to '%s' open (F) The C<open> function has been asked to open multiple files. This can happen if you are trying to open a pipe to a command that takes a @@ -3943,7 +3943,7 @@ a block by itself. (W unopened) You tried to use the stat() function on a filehandle that was either never opened or has since been closed. -=item Stub found while resolving method "%s" overloading "%s" +=item Stub found while resolving method "%s" overloading "%s" in package "%s" (P) Overloading resolution over @ISA tree may be broken by importation stubs. Stubs should never be implicitly created, but explicit calls to @@ -4154,18 +4154,18 @@ suspect you're not running on Unix. =item "-T" is on the #! line, it must also be used on the command line (X) The #! line (or local equivalent) in a Perl script contains the -B<-T> option, but Perl was not invoked with B<-T> in its command line. +B<-T> option (or the B<-t> option), but Perl was not invoked with B<-T> in its command line. This is an error because, by the time Perl discovers a B<-T> in a script, it's too late to properly taint everything from the environment. So Perl gives up. If the Perl script is being executed as a command using the #! mechanism (or its local equivalent), this error can usually be fixed by -editing the #! line so that the B<-T> option is a part of Perl's first -argument: e.g. change C<perl -n -T> to C<perl -T -n>. +editing the #! line so that the B<-%c> option is a part of Perl's first +argument: e.g. change C<perl -n -%c> to C<perl -%c -n>. If the Perl script is being executed as C<perl scriptname>, then the -B<-T> option must appear on the command line: C<perl -T scriptname>. +B<-%c> option must appear on the command line: C<perl -%c scriptname>. =item To%s: illegal mapping '%s' diff --git a/sv.c b/sv.c index 7de171d..bb4df7a 100644 --- a/sv.c +++ b/sv.c @@ -5518,8 +5518,8 @@ Perl_sv_replace(pTHX_ register SV *const sv, register SV *const nsv) SV_CHECK_THINKFIRST_COW_DROP(sv); if (SvREFCNT(nsv) != 1) { - Perl_croak(aTHX_ "panic: reference miscount on nsv in sv_replace() (%" - UVuf " != 1)", (UV) SvREFCNT(nsv)); + Perl_croak(aTHX_ "panic: reference miscount on nsv in sv_replace()" + " (%" UVuf " != 1)", (UV) SvREFCNT(nsv)); } if (SvMAGICAL(sv)) { if (SvMAGICAL(nsv)) diff --git a/t/pod/diag.t b/t/pod/diag.t new file mode 100644 index 0000000..5f378ae --- /dev/null +++ b/t/pod/diag.t @@ -0,0 +1,383 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Test::More 'no_plan'; +$|=1; + +my $make_exceptions_list = ($ARGV[0]||'') eq '--make-exceptions-list'; + +open my $diagfh, "<:raw", "../pod/perldiag.pod" + or die "Can't open ../pod/perldiag.pod: $!"; + +my %entries; +while (<DATA>) { + chomp; + $entries{$_}{todo}=1; +} + +my $cur_entry; +while (<$diagfh>) { + if (m/^=item (.*)/) { + $cur_entry = $1; + } elsif (m/^\((.)(?: ([a-z]+?))?\)/ and !$entries{$cur_entry}{severity}) { + # Make sure to init this here, so an actual entry in perldiag overwrites + # one in DATA. + $entries{$cur_entry}{todo} = 0; + $entries{$cur_entry}{severity} = $1; + $entries{$cur_entry}{category} = $2; + } +} + +my @todo = ('..'); +while (@todo) { + my $todo = shift @todo; + next if $todo ~~ ['../t', '../lib', '../ext']; + # opmini.c is just a copy of op.c, so there's no need to check again. + next if $todo eq '../opmini.c'; + if (-d $todo) { + push @todo, glob "$todo/*"; + } elsif ($todo =~ m/\.[ch]$/) { + check_file($todo); + } +} + +sub check_file { + my ($codefn) = @_; + + print "# $codefn\n"; + + open my $codefh, "<:raw", $codefn + or die "Can't open $codefn: $!"; + + my $listed_as; + my $listed_as_line; + my $sub = 'top of file'; + while (<$codefh>) { + chomp; + # Getting too much here isn't a problem; we only use this to skip + # errors inside of XS modules, which should get documented in the + # docs for the module. + if (m<^([^#\s].*)> and $1 !~ m/^[{}]*$/) { + $sub = $1; + } + next if $sub =~ m/^XS/; + if (m</\* diag_listed_as: (.*) \*/>) { + $listed_as = $1; + $listed_as_line = $.+1; + } + next if /^#/; + next if /^ * /; + while (m/\bDIE\b|Perl_(croak|die|warn(er)?)/ and not m/\);$/) { + my $nextline = <$codefh>; + # Means we fell off the end of the file. Not terribly surprising; + # this code tries to merge a lot of things that aren't regular C + # code (preprocessor stuff, long comments). That's OK; we don't + # need those anyway. + last if not defined $nextline; + chomp $nextline; + $nextline =~ s/^\s+//; + # Note that we only want to do this where *both* are true. + $_ =~ s/\\$//; + if ($_ =~ m/"$/ and $nextline =~ m/^"/) { + $_ =~ s/"$//; + $nextline =~ s/^"//; + } + $_ = "$_$nextline"; + } + # This should happen *after* unwrapping, or we don't reformat the things + # in later lines. + # List from perlguts.pod "Formatted Printing of IVs, UVs, and NVs" + my %specialformats = (IVdf => 'd', + UVuf => 'd', + UVof => 'o', + UVxf => 'x', + UVXf => 'X', + NVef => 'f', + NVff => 'f', + NVgf => 'f', + SVf => 's'); + for my $from (keys %specialformats) { + s/%"\s*$from\s*"/\%$specialformats{$from}/g; + s/%"\s*$from/\%$specialformats{$from}"/g; + } + # The %"foo" thing needs to happen *before* this regex. + if (m/(?:DIE|Perl_(croak|die|warn|warner))(?:_nocontext)? \s* + \(aTHX_ \s* + (?:packWARN\d*\((.*?)\),)? \s* + "((?:\\"|[^"])*?)"/x) { + # diag($_); + # DIE is just return Perl_die + my $severity = {croak => [qw/P F/], + die => [qw/P F/], + warn => [qw/W D S/], + }->{$1||'die'}; + my @categories; + if ($2) { + @categories = map {s/^WARN_//; lc $_} split /\s*[|,]\s*/, $2; + } + my $name; + if ($listed_as and $listed_as_line == $.) { + $name = $listed_as; + } else { + $name = $3; + # The form listed in perldiag ignores most sorts of fancy printf formatting, + # or makes it more perlish. + $name =~ s/%%/\\%/g; + $name =~ s/%l[ud]/%d/g; + $name =~ s/%\.(\d+|\*)s/\%s/g; + $name =~ s/\\"/"/g; + $name =~ s/\\t/\t/g; + $name =~ s/\\n/ /g; + $name =~ s/\s+$//; + } + + # Extra explanatory info on an already-listed error, doesn't + # need it's own listing. + next if $name =~ m/^\t/; + + # Happens fairly often with PL_no_modify. + next if $name eq '%s'; + + # Special syntax for magic comment, allows ignoring the fact + # that it isn't listed. Only use in very special circumstances, + # like this script failing to notice that the Perl_croak call is + # inside an #if 0 block. + next if $name eq 'SKIPME'; + + if (exists $entries{$name}) { + if ($entries{$name}{todo}) { + TODO: { + local $TODO = 'in DATA'; + fail("Presence of '$name' from $codefn line $."); + } + } else { + ok("Presence of '$name' from $codefn line $."); + } + # Later, should start checking that the severity is correct, too. + } elsif ($name =~ m/^panic: /) { + # Just too many panic:s, they are hard to diagnose, and there + # is a generic "panic: %s" entry. Leave these for another + # pass. + ok("Presence of '$name' from $codefn line $., covered by panic: %s entry"); + } else { + if ($make_exceptions_list) { + print STDERR "$name\n"; + } else { + fail("Presence of '$name' from $codefn line $."); + } + } + + die if $name =~ /%$/; + } + } +} +# Lists all missing things as of the inaguration of this script, so we +# don't have to go from "meh" to perfect all at once. +__DATA__ +Ambiguous call resolved as CORE::%s(), %s +Ambiguous use of %c resolved as operator %c +Ambiguous use of %c{%s} resolved to %c%s +Ambiguous use of %c{%s%s} resolved to %c%s%s +Ambiguous use of -%s resolved as -&%s() +Argument "%s" isn't numeric +Argument "%s" isn't numeric in %s +Assertion: marks beyond string end +Assertion: string is shorter than advertised +Attempt to clear deleted array +Attempt to free non-arena SV: 0x%x +Attempt to free non-existent shared string '%s'%s +Attempt to free temp prematurely: SV 0x%x +Attempt to free unreferenced scalar: SV 0x%x +Attempt to reload %s aborted. Compilation failed in require +av_reify called on tied array +Bad name after %s%s +Bad symbol for scalar +bad top format reference +Bizarre copy of %s +Bizarre SvTYPE [%d] +Cannot copy to %s +Can't call method "%s" %s +Can't coerce readonly %s to string +Can't coerce readonly %s to string in %s +Can't fix broken locale name "%s" +Can't get short module name from a handle +Can't goto subroutine from an eval-block +Can't goto subroutine from an eval-string +Can't locate object method "%s" via package "%s" (perhaps you forgot to load "%s"?) +Can't modify non-existent substring +Can't open +Can't open perl script "%s": %s +Can't open %s +Can't reset \%ENV on this system +Can't return array to lvalue scalar context +Can't return a %s from lvalue subroutine +Can't return hash to lvalue scalar context +Can't spawn "%s": %s +Can't %s script `%s' with ARGV[0] being `%s' +Can't %s "%s": %s +Can't %s %s%s%s +Can't %s `%s' with ARGV[0] being `%s' (looking for executables only, not found) +Can't take %s of %f +Can't use '%c' after -mname +Can't use \\%c to mean $%c in expression +Can't use when() outside a topicalizer +\\%c better written as $%c +Character(s) in '%c' format wrapped in %s +$%c is no longer supported +Cloning substitution context is unimplemented +Code missing after '/' in pack +Code missing after '/' in unpack +Compilation failed in require +Corrupted regexp opcode %d > %d +'%c' outside of string in pack +Debug leaking scalars child failed%s%s with errno %d: %s +Deep recursion on anonymous subroutine +defined(\%hash) is deprecated +Don't know how to handle magic of type \\%o +-Dp not implemented on this platform +entering effective gid failed +entering effective uid failed +Error reading "%s": %s +Exiting %s via %s +Filehandle opened only for %sput +Filehandle %s opened only for %sput +Filehandle STD%s reopened as %s only for input +YOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP! +Format STDOUT redefined +Free to wrong pool %p not %p +get %s %p %p %p +glob failed (can't start child: %s) +glob failed (child exited with status %d%s) +Goto undefined subroutine +Goto undefined subroutine &%s +Hash \%%s missing the \% in argument %d of %s() +Illegal character \\%03o (carriage return) +Illegal character %sin prototype for %s : %s +Integer overflow in decimal number +Integer overflow in version %d +internal \%<num>p might conflict with future printf extensions +invalid control request: '\\%03o' +Invalid module name %s with -%c option: contains single ':' +invalid option -D%c, use -D'' to see choices +Invalid range "%c-%c" in transliteration operator +Invalid separator character %c%c%c in PerlIO layer specification %s +Invalid TOKEN object ignored +Invalid type '%c' in pack +Invalid type '%c' in %s +Invalid type '%c' in unpack +Invalid type ',' in %s +Invalid version format (alpha without decimal) +Invalid version format (misplaced _ in number) +Invalid version object +'j' not supported on this platform +'J' not supported on this platform +Layer does not match this perl +leaving effective gid failed +leaving effective uid failed +List form of piped open not implemented +Lost precision when decrementing %f by 1 +Lost precision when incrementing %f by 1 +%lx +Malformed UTF-16 surrogate +Malformed UTF-8 character (fatal) +'\%' may not be used in pack +Missing (suid) fd script name +More than one argument to open +More than one argument to open(,':%s') +mprotect for %p %d failed with %d +mprotect RW for %p %d failed with %d +No code specified for -%c +No directory specified for -I +No such class field "%s" +Not an XSUB reference +Not %s reference +Offset outside string +Opening dirhandle %s also as a file +Opening filehandle %s also as a directory +Operator or semicolon missing before %c%s +Overloaded dereference did not return a reference +Perl bug: predicted utf8 length not available +PERL_SIGNALS illegal: "%s" +Perl %s required (did you mean %s?)--this is only %s, stopped +Perl %s required--this is only %s, stopped +Perls since %s too modern--this is %s, stopped +Possible unintended interpolation of $\\ in regex +ptr wrong %p != %p fl=%08 +Recompile perl with -DDEBUGGING to use -D switch (did you mean -d ?) +Recursive call to Perl_load_module in PerlIO_find_layer +refcnt_dec: fd %d < 0 +refcnt_dec: fd %d: %d <= 0 +refcnt_dec: fd %d >= refcnt_size %d +refcnt_inc: fd %d < 0 +refcnt_inc: fd %d: %d <= 0 +Reversed %c= operator +Runaway prototype +%s(%.0f) failed +%s(%.0f) too large +Scalar value %s better written as $%s +%sCompilation failed in regexp +%sCompilation failed in require +set %s %p %p %p +%s free() ignored (RMAGIC, PERL_CORE) +%s has too many errors. +SIG%s handler "%s" not defined. +%s: illegal mapping '%s' +%s in %s +Size magic not implemented +%s limit (%d) exceeded +%s method "%s" overloading "%s" in package "%s" +%s number > %s non-portable +%s object version %s does not match %s%s%s%s %s +%srealloc() %signored +%s returned from lvalue subroutine in scalar context +%s%s has too many errors. +%s%s on %s %s +%s%s on %s %s %s +Starting Full Screen process with flag=%d, mytype=%d +Starting PM process with flag=%d, mytype=%d +strxfrm() gets absurd +SWASHNEW didn't return an HV ref +-T and -B not implemented on filehandles +The flock() function is not implemented on NetWare +The rewinddir() function is not implemented on NetWare +The seekdir() function is not implemented on NetWare +The stat preceding lstat() wasn't an lstat +The telldir() function is not implemented on NetWare +Too deeply nested ()-groups in %s +Too late to run CHECK block +Too late to run INIT block +Too many args on %s line of "%s" +U0 mode on a byte string +Unbalanced string table refcount: (%d) for "%s" +Undefined top format called +Unexpected constant lvalue entersub entry via type/targ %d:%d +Unicode character 0x%04 +Unknown PerlIO layer "scalar" +Unknown Unicode option letter '%c' +unrecognised control character '%c' +Unstable directory path, current directory changed unexpectedly +Unsupported script encoding UTF16-BE +Unsupported script encoding UTF16-LE +Unsupported script encoding UTF32-BE +Unsupported script encoding UTF32-LE +Unterminated compressed integer in unpack +Usage: CODE(0x%x)(%s) +Usage: %s(%s) +Usage: %s::%s(%s) +Usage: VMS::Filespec::unixrealpath(spec) +Usage: VMS::Filespec::vmsrealpath(spec) +Use of inherited AUTOLOAD for non-method %s::%s() is deprecated +UTF-16 surrogate 0x%04 +utf8 "\\x%02X" does not map to Unicode +Value of logical "%s" too long. Truncating to %i bytes +value of node is %d in Offset macro +Value of %s%s can be "0"; test with defined() +Variable "%c%s" is not imported +vector argument not supported with alpha versions +Wide character +Wide character in $/ +Wide character in print +Wide character in %s +Within []-length '%c' not allowed in %s +Wrong syntax (suid) fd script name "%s" +'X' outside of string in unpack -- Perl5 Master Repository
