Karl Williamson [Sun, 25 Sep 2011 16:38:14 +0000 (10:38 -0600)]
podcheck.t: New method for skipping .PL files
This reverts most of commit
df80274d3278c640a5e0fbf3982950bb5ca9d7bc
and uses a different method to exclude .PL files, suggested by Nicholas
Clark.
It uses the MANIFEST to find such files and then excludes them based on
the full path name.
Karl Williamson [Sun, 25 Sep 2011 16:25:07 +0000 (10:25 -0600)]
podcheck.t: Remove extra loop initialization
I think its clearer to put the subroutine call in each line of
initialization
Karl Williamson [Sun, 25 Sep 2011 16:22:57 +0000 (10:22 -0600)]
podcheck.t: Move hash declaration to earlier in file
The only change is to move a block of code around. This is to prepare
for future commits
Karl Williamson [Sun, 25 Sep 2011 17:00:26 +0000 (11:00 -0600)]
podcheck.t: Move subroutine defn earlier in file
This is to prepare for future commits, to avoid a warning message
about prototype checking
Karl Williamson [Sun, 25 Sep 2011 15:40:27 +0000 (09:40 -0600)]
podcheck.t: Don't calc value twice
Karl Williamson [Sun, 25 Sep 2011 15:37:39 +0000 (09:37 -0600)]
podcheck.t: remove unused variable
Chris 'BinGOs' Williams [Sun, 25 Sep 2011 14:22:40 +0000 (15:22 +0100)]
Synchronise Module::CoreList version in Maintainers.pl
Chip [Tue, 20 Sep 2011 06:51:49 +0000 (23:51 -0700)]
add a couple missing LEAVEs in perlio_async_run()
Father Chrysostomos [Sun, 25 Sep 2011 01:56:57 +0000 (18:56 -0700)]
Avoid a double free with CORE->lc
The code for autovivifying coresubs for method calls ended up calling
hv_store(stash,name,len,(SV *)gv,0) where gv is already in the stash
under that entry. Since hv_store takes ownership of one reference
count and decrements that of what it overwrites (which is the same gv
in this case), it ends up freeing the gv prematurely.
It ended up making that call because S_maybe_add_coresub needs the
stash to get its ENAME (which happens when called by gv_fetchmeth),
but it also assumed that the presence of the stash meant the gv
needed to be stored in it (as is the case with the other caller,
gv_fetchpvn_flags).
This patch reuses the fullen (full length) parameter as a flag to
indicate that that hv_store call should be skipped.
These workarounds for the assumptions that newATTRSUB makes are start-
ing to make inlining look very attractive....
Karl Williamson [Thu, 22 Sep 2011 23:34:35 +0000 (17:34 -0600)]
regexp.t: print diagnostics with leading '#'
Some test platforms don't like unexpected output without the comment
prefix character
Nicholas Clark [Fri, 23 Sep 2011 14:30:22 +0000 (16:30 +0200)]
Add t/porting/checkcfgvar.t to run Porting/checkcfgvar.pl as a test.
Add TAP generation and a --tap option to Porting/checkcfgvar.pl.
In checkcfgvar.t, document its purpose, and the likely way to fix the
problems that it has flagged up. This is a prototype before adding similar
instructions to the other t/porting tests.
Nicholas Clark [Fri, 23 Sep 2011 13:05:49 +0000 (15:05 +0200)]
A small refactor of checkcfgvar.pl
For --list, only print the name out in one place.
Remove a now-redundant sort for --regen.
Alert the user if default values are not being added because --default was
not specified.
Nicholas Clark [Fri, 23 Sep 2011 14:55:20 +0000 (16:55 +0200)]
Refactor t/porting/regen.t to use TestInit q(T A);
Previously it had custom code to change directory to the top of the source
tree, and to convert the library paths to absolute. TestInit has common code
for this.
Father Chrysostomos [Sat, 24 Sep 2011 04:33:58 +0000 (21:33 -0700)]
[perl #92898] Clarify (*THEN)’s scope
Father Chrysostomos [Fri, 23 Sep 2011 13:16:14 +0000 (06:16 -0700)]
Document open fh, "<:"
Nicholas Clark [Fri, 23 Sep 2011 10:48:20 +0000 (12:48 +0200)]
Move the test for recursive call to Perl_load_module to t/io/perlio.t
It's a croak(), not a warning, so doesn't really belong in lib/warnings.t
[This also implicitly fixes the wrong expected output of
69dc7e4bdb8e397c]
Nicholas Clark [Fri, 23 Sep 2011 09:43:37 +0000 (11:43 +0200)]
Correct the expected results for the first perlio warnings subtest.
Father Chrysostomos [Fri, 23 Sep 2011 05:32:48 +0000 (22:32 -0700)]
Test perl #96008: use and require affected by open.pm
Brian Fraser [Fri, 23 Sep 2011 05:31:46 +0000 (22:31 -0700)]
[perl #96008] use and require are affected by the open pragma
% perl -e 'print "package F;\n # \xF1\n;1;"' > x.pl
% perl '-Mopen=:encoding(utf8)' -e 'require "x.pl"'
utf8 "\xF1" does not map to Unicode at x.pl line 1.
Bit of a surprising discovery; Turns out that passing a single ":" for
the layers skips the fetch from the context layers:
perl -wE 'use open qw( :encoding(UTF-8) ); open my $fh, "<:", "etc"; say PerlIO::get_layers($fh);'
That will only get the relevant default layers, while removing the
colons makes it work as usual -- So we can abuse this (mis)feature to
fix the bug.
Father Chrysostomos [Fri, 23 Sep 2011 05:29:16 +0000 (22:29 -0700)]
Move/rewrite test for Recursive call to Perl_load_module
This test was relying on a bug in require that causes it to use what-
ever I/O layers are active in require‘s *caller* when opening a file
[perl #96008].
This rewrites the test using the example in ticket #75722.
Since it no longer has anything to do with open.pm, it is now in
t/lib/warnings/perlio.
Father Chrysostomos [Thu, 22 Sep 2011 23:28:46 +0000 (16:28 -0700)]
Make CORE->method work
This will probably not be used, but ought to be here for complete-
ness’ sake.
Method lookup needs to trigger the autovivification of coresubs.
Since it does not use gv_fetchpvn_flags, the coresub-autovification is
now in a separate static function, so that both standard gv lookup and
method lookup can share it.
Karl Williamson [Thu, 22 Sep 2011 16:42:30 +0000 (10:42 -0600)]
perlre: Note a bug's existence
Karl Williamson [Thu, 22 Sep 2011 16:40:15 +0000 (10:40 -0600)]
re_tests: Add TODO test
Karl Williamson [Thu, 22 Sep 2011 16:17:36 +0000 (10:17 -0600)]
podcheck.t: Add comment
Karl Williamson [Thu, 22 Sep 2011 16:16:27 +0000 (10:16 -0600)]
Porting/cherrymaint: Add comment
Karl Williamson [Thu, 22 Sep 2011 16:15:34 +0000 (10:15 -0600)]
manifest.t: Clarify a test's wording
David Golden [Thu, 22 Sep 2011 17:38:52 +0000 (13:38 -0400)]
base.pm: remove unused variable
David Golden [Thu, 22 Sep 2011 17:33:06 +0000 (13:33 -0400)]
base.pm no longer tracks loaded modules
Tracking modules loaded by base.pm to avoid reloading them means
that any module that wishes to force a reload can't just modify
%INC but must also interact with base.pm to clear its cache.
Removing the module-loaded checks have minimal impact. The internal
call to require() is a NOP for a loaded module. For an internal
package, the require() will fail with the same error message as
before, which base.pm then ignores. Tracking modules loaded to avoid
this slight extra overhead is not worth the complexity for other
modules that wish to manipulate %INC.
H.Merijn Brand [Thu, 22 Sep 2011 15:26:34 +0000 (17:26 +0200)]
Use a real compile to test for stdbool.h
On some Solaris systems, <stdbool.h> is present, but will give an
error if used by a compiler that is not sufficiently c99-compliant.
Check for this by including <stdbool.h> and trying to compile a
short program that uses bool.
Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
Karl Williamson [Thu, 22 Sep 2011 15:19:02 +0000 (09:19 -0600)]
podcheck.t: clarify its pod
Karl Williamson [Thu, 22 Sep 2011 15:08:30 +0000 (09:08 -0600)]
podcheck.t: Is problem if cpan/non-cpan have same NAME
If a module whose upstream is cpan has the same NAME as a module that
isn't, that is a problem that should be warned about, as we shouldn't be
shipping two identically named modules, even if one is not under Perl
core's control. (If two cpan modules have the same name, it is a
problem as well, but not anything we can do anything about, so warn only
when cpan warnings are enabled.)
Karl Williamson [Thu, 22 Sep 2011 15:05:26 +0000 (09:05 -0600)]
podcheck.t: Process files sorted caselessly
In some situations previously, case was not important in the sort order;
this extends that to all situations.
Karl Williamson [Thu, 22 Sep 2011 15:04:39 +0000 (09:04 -0600)]
podcheck: Nits in comments
David Golden [Thu, 22 Sep 2011 15:09:33 +0000 (11:09 -0400)]
base.pm no longer modifies $VERSION
Previously, base.pm modified the $VERSION of modules it loaded to
the string "-1, set by base.pm". This is not a valid lax version
string and thus could not be parsed by version.pm. (It is also an
encapsulation violation, as it modifies a global in another package.)
This patch removes the $VERSION modification code entirely and uses
a private hash to track which modules base.pm has successfully loaded.
This also eliminates a subtle bug in how base.pm was checking for
the existence of a package's VERSION scalar.
[Though the final mechanism is different, thank you to John Peacock for
proposing the initial patch to eliminate the "-1..." code from base.pm]
Karl Williamson [Wed, 21 Sep 2011 16:15:02 +0000 (10:15 -0600)]
fold_grind.t: Ignore blank lines
This is in preparation for Unicode 6.1, which has blank lines in the
.txt file that fold_grind reads. The line that strips off comments did
not work on plain null lines.
Karl Williamson [Wed, 21 Sep 2011 16:07:38 +0000 (10:07 -0600)]
UCD.pm: accommodate non-standard mktables output
Generally mktables generates the most compact tables possible. But this
should not be relied on, and when called with the -anotate option,
the mktables tables will not be compact. This will compact
non-compacted tables when reading them.
Karl Williamson [Wed, 21 Sep 2011 16:06:21 +0000 (10:06 -0600)]
UCD.pm: Only calculate hex once
This uses intermediate variables to store the output of hex(), with the
result that if there is an $end, its hex only is calculated once.
Stevan Little [Wed, 21 Sep 2011 14:23:10 +0000 (10:23 -0400)]
adding in the list archive URL for the announcement
Nicholas Clark [Fri, 16 Sep 2011 17:32:03 +0000 (19:32 +0200)]
Add an option to checkcfgvar.pl to add defaults for missing variables.
This eases the updates of the config.sh-format files when a new Configure
variable is added.
Nicholas Clark [Fri, 16 Sep 2011 17:01:33 +0000 (19:01 +0200)]
Add a --regen option to checkcfgvar.pl to regenerate config files.
Verify that the section of config file containing probed files is sorted
lexically. If --regen is used, updated the file on disk with a correctly
sorted version. (Except for configure.com, which has a different structure
not amenable to automatic analysis and update, hence still has to be
updated manually.)
Ensure all config files are correctly sorted.
Nicholas Clark [Fri, 16 Sep 2011 13:03:40 +0000 (15:03 +0200)]
Add empty Author and zip entries to symbian/config.sh and uconfig{,64}.sh
This brackets the probed values sections consistently across all config.sh
type files, between Author and zip inclusive.
Move PERL_CONFIG_SH to the end of NetWare/config.wc and symbian/config.sh,
and PERL_CONFIG_SH CONFIGDOTSH to the end of win32/config.ce, to be
consistent with the other config.sh files.
Nicholas Clark [Fri, 16 Sep 2011 12:09:07 +0000 (14:09 +0200)]
Sort epoc/config.sh
This brings it back to the regular order: header information, probed values,
information about arguments to Configure, and values propagated from a
previous run.
Nicholas Clark [Fri, 16 Sep 2011 11:33:07 +0000 (13:33 +0200)]
De-duplicate epoc/config.sh
"Don't Repeat Yourself" :-)
Nicholas Clark [Fri, 16 Sep 2011 10:59:51 +0000 (12:59 +0200)]
Eliminate duplicate contradictory values from epoc/config.sh.
The two values for quadtype have been present since epoc/config.sh was added
in
3a2f06e93704a418. quadtype is signed, (uquadtype is its unsigned
equivalent) hence remove the definition that uses unsigned long long.
The duplicate contradictory values for d_vendorarch were merged in by
b250498faaf6fbd0 (along with a lot of the non-contradictory duplication),
originating from commit
eb0d51032951025d on the cfgperl branch.
The contradictory values for socksizetype arrived with the same commits.
Nicholas Clark [Fri, 16 Sep 2011 14:09:33 +0000 (16:09 +0200)]
Change checkcfgvar.pl to permit trailing comments on config lines.
Convert the comment for _a in config.ce to a trailing comment.
Nicholas Clark [Fri, 16 Sep 2011 13:36:07 +0000 (15:36 +0200)]
Tighten the checking regex in checkcfgvar.pl.
Fix the dubious line in symbian/config.sh which this exposes.
Nicholas Clark [Fri, 16 Sep 2011 10:19:15 +0000 (12:19 +0200)]
In checkcfgvar.pl, split the configure.com code out.
The configure.com handling is actually sufficiently different that it's
simpler to do it in its own loop. The two regexs for config.sh-style parsing
can be merged. Use non-capturing parens for the parts of regexs that don't
need to be captured.
Father Chrysostomos [Wed, 21 Sep 2011 07:59:02 +0000 (00:59 -0700)]
[perl #99660] Remove elems from hashes before freeing them
Commit
f50383f58 made the ‘HeVAL(entry) = &PL_sv_placeholder;’ in the
hash-element-deletion code unconditional. In doing so, it put it
after the if/else statement containing the SvREFCNT_dec. So the freed
SV was visible in the hash to destructors called by SvREFCNT_dec.
Father Chrysostomos [Tue, 20 Sep 2011 15:55:09 +0000 (08:55 -0700)]
[perl #93590] $tainted ~~ [...] failing
When smartmatch is about to start, to avoid calling get-magic (e.g.,
FETCH methods) more than once, it copies any argument that has
get-magic.
Tainting uses get-magic to taint the expression. Calling mg_get(sv)
on a tainted scalar causes PL_tainted to be set, causing any scalars
modified by sv_setsv_flags to be tainted. That means that tainting
magic gets copied from one scalar to another.
So when smartmatch tries to copy the variable to avoid repeated calls
to magic, it still copies taint magic to the new variable.
For $scalar ~~ @array (or ~~ [...]), S_do_smartmatch calls itself
recursively for each element of @array, with $scalar (on the suppos-
edly non-magical copy of $scalar) on the left and the element on
the right.
In that recursive call, it again does the get-magic check and copies
the argument. Since the copied of a tainted variable on the LHS is
magical, it gets copied again. Since the first copy is a mortal
(marked TEMP) with a refcount of one, the second copy steal its
string buffer.
The outer call to S_do_smartmatch then proceeds with the second ele-
ment of @array, without realising that its copy of $scalar has lost
its string buffer and is now undefined.
So these produce incorrect results under -T (where $^X is ‘perl’):
$^X =~ ["whatever", undef] # matches
$^X =~ ["whatever", "perl"] # fails
This problem did not start occurring until this commit:
commit
8985fe98dcc5c0af2fadeac15dfbc13f553ee7fc
Author: David Mitchell <davem@iabyn.com>
Date: Thu Dec 30 10:32:44 2010 +0000
Better handling of magic methods freeing the SV
mg_get used to increase the refcount unconditionally, pushing it on to
the mortals stack. So the magical copy would have had a refcount of
2, preventing its string buffer from being stolen. Now it has a ref-
erence count of 1.
This commit solves it by adding a new parameter to S_do_smartmatch
telling it that the variable has already been copied and does not even
need to be checked. The $scalar~~@array case sets that parameter for
the recursive calls. That avoids the whole string-stealing problem
*and* avoids extra unnecessary SVs.
Eric Brine [Tue, 20 Sep 2011 00:16:41 +0000 (20:16 -0400)]
Fix inability of lex_read_unichar to handle 80-FF under "no utf8;". lex_peek_unichar is already correct.
Stevan Little [Wed, 21 Sep 2011 03:54:55 +0000 (23:54 -0400)]
update TOC for perl5153delta
Stevan Little [Wed, 21 Sep 2011 03:41:54 +0000 (23:41 -0400)]
moving old perldelta and creating new one
Stevan Little [Wed, 21 Sep 2011 03:31:15 +0000 (23:31 -0400)]
Adding in my choice of epigraph to epigraph.pod
Stevan Little [Wed, 21 Sep 2011 00:42:50 +0000 (20:42 -0400)]
No need to go into this much detail in the pod (also podcheck doesn't like it)
Stevan Little [Tue, 20 Sep 2011 22:12:39 +0000 (18:12 -0400)]
Tweak wording of the Notice based on Jesse's feedback
Stevan Little [Tue, 20 Sep 2011 21:46:40 +0000 (17:46 -0400)]
Adding some Known Problems to perldelta
Stevan Little [Tue, 20 Sep 2011 17:48:26 +0000 (13:48 -0400)]
removing the comment from the perldelta (and the previous perldelta as well)
Stevan Little [Tue, 20 Sep 2011 16:53:49 +0000 (12:53 -0400)]
finalize perldelta
Stevan Little [Tue, 20 Sep 2011 16:51:29 +0000 (12:51 -0400)]
adding new release to perlhist
Stevan Little [Tue, 20 Sep 2011 16:43:46 +0000 (12:43 -0400)]
fixing the path to pod2html in the release managers guide
Stevan Little [Tue, 20 Sep 2011 16:31:10 +0000 (12:31 -0400)]
Adding the acknowledgements section to perldelta
Stevan Little [Tue, 20 Sep 2011 01:24:56 +0000 (21:24 -0400)]
Update Module::CoreList for 5.15.3
Stevan Little [Tue, 20 Sep 2011 00:54:33 +0000 (20:54 -0400)]
The link to Devel::PPPort was not understood by porting/podcheck.t so we had to teach it
Stevan Little [Tue, 20 Sep 2011 00:53:40 +0000 (20:53 -0400)]
perldelta pod tweaks,.. this is not a link
Stevan Little [Tue, 20 Sep 2011 00:35:32 +0000 (20:35 -0400)]
manually updating INSTALL version "Upgrading from 5.X.Y or earlier" as specified in the RMG
Stevan Little [Mon, 19 Sep 2011 21:14:52 +0000 (17:14 -0400)]
bump version to 5.15.3 using Porting/bump-perl-version
Stevan Little [Mon, 19 Sep 2011 21:26:34 +0000 (17:26 -0400)]
More pod formatting tweaks
Stevan Little [Mon, 19 Sep 2011 21:06:01 +0000 (17:06 -0400)]
Fix some pod errors reported by podchecker
Stevan Little [Mon, 19 Sep 2011 20:45:12 +0000 (16:45 -0400)]
Updating perldelta in preparation for the 5.13.3 release.
Stevan Little [Mon, 19 Sep 2011 19:51:02 +0000 (15:51 -0400)]
Fixing the version in the comment in perl5152delta.pod
Nicholas Clark [Tue, 20 Sep 2011 13:11:46 +0000 (15:11 +0200)]
Skip 2 tests in t/op/filetest.t if t/TEST is a symlink.
t/TEST is usually a regular file, but not always. For example, if one is
building using a symlink forest (eg ./Configure -Dmksymlinks) then it will
be a symlink.
Stevan Little [Mon, 19 Sep 2011 16:57:51 +0000 (12:57 -0400)]
Update CPAN-Meta to CPAN version 2.112621
[DELTA]
2.112621 2011-09-19 12:15:16 America/New_York
[BUGFIX]
- Spell BACKEND environment variables correctly this time
[noticed by Stevan Little]
2.112620 2011-09-18 20:56:06 America/New_York
[BUGFIX]
- Protect tests against PERL_(YAML|JSON)_BACKEND settings that could
cause tests to fail. (RT #69979)
Stevan Little [Mon, 19 Sep 2011 16:30:42 +0000 (12:30 -0400)]
Adding myself to the AUTHORS list
Dave Rolsky [Fri, 16 Sep 2011 04:00:45 +0000 (23:00 -0500)]
regen generated files
Dave Rolsky [Fri, 16 Sep 2011 04:00:32 +0000 (23:00 -0500)]
Include stub files in pod.lst
Dave Rolsky [Fri, 16 Sep 2011 04:00:09 +0000 (23:00 -0500)]
Explicitly ignore the stub pod files I just added when doing the sanity check
Dave Rolsky [Fri, 16 Sep 2011 03:39:32 +0000 (22:39 -0500)]
add stub files for deleted OO-related pod files
Florian Ragwitz [Mon, 19 Sep 2011 12:10:31 +0000 (14:10 +0200)]
For RC releases there's no indexer report
Tony Cook [Mon, 19 Sep 2011 05:23:44 +0000 (15:23 +1000)]
use :raw to avoid interference from PERL_UNICODE when creating test data
986a805c added dist/IO/t/io_utf8argv.t which creates a utf-8 test file
from raw bytes. When PERL_UNICODE was set the bytes were encoded as
utf-8, so producing a double-encode file.
Create the file with :raw to avoid that.
Tony Cook [Mon, 19 Sep 2011 05:20:04 +0000 (15:20 +1000)]
clear $ENV{PERL_UNICODE} before runperl()ing a test of use open.
If PERL_UNICODE was set to a value that modified stream behaviour, the
test added in
73f1eaca would fail, because the implied -C option would
cause the behaviour the test was checking wouldn't happen.
Florian Ragwitz [Mon, 19 Sep 2011 05:13:42 +0000 (07:13 +0200)]
Fix the version of CoreList that'll ship with 5.14.2
Florian Ragwitz [Mon, 19 Sep 2011 04:34:54 +0000 (06:34 +0200)]
Update Module::CoreList for 5.14.2
Florian Ragwitz [Mon, 19 Sep 2011 04:45:11 +0000 (06:45 +0200)]
Re-generate known_pod_issues.dat
Father Chrysostomos [Mon, 19 Sep 2011 00:08:28 +0000 (17:08 -0700)]
Correct perldelta entry for -l \*foo change
Chris 'BinGOs' Williams [Sun, 18 Sep 2011 21:01:08 +0000 (22:01 +0100)]
Update CPAN-Meta to CPAN version 2.112600
[DELTA]
2.112600 2011-09-17 12:21:09 America/New_York
[DOCUMENTATION]
- Fixed spelling error in CPAN::Meta::Spec (RT #71036) [Gregor Hermann]
Father Chrysostomos [Sun, 18 Sep 2011 21:17:50 +0000 (14:17 -0700)]
[perl #95034] Make perldoc <url> use a reasonabe name
This patch makes perldoc with a URL use a somewhat reasonable name
based on the basename of the URL, instead of displaying PALLEGCSYO or
BJ1KKH1675 in the pod header (based on the tmp file name).
It treats all URLs the same (changing perldoc.pod to PERLDOC), instead
of treating .pm’s specially. Maybe this could be improved later.
Father Chrysostomos [Sun, 18 Sep 2011 19:48:05 +0000 (12:48 -0700)]
DBFile -> DB_File
Craig A. Berry [Sun, 18 Sep 2011 19:33:51 +0000 (14:33 -0500)]
Update skip count in t/op/filetest.t after
433644eed.
Chris 'BinGOs' Williams [Sun, 18 Sep 2011 19:37:22 +0000 (20:37 +0100)]
Noted recent changes to Module::CoreList and added perlpunks.de/corelist
Karl Williamson [Sun, 18 Sep 2011 19:13:21 +0000 (13:13 -0600)]
podcheck: Clean up known issues
When a link to a module is unknown, it is better to use the --add_link
option to podcheck.t and not the --regen option
Father Chrysostomos [Sun, 18 Sep 2011 13:13:34 +0000 (06:13 -0700)]
Increase $VERSIONs for Text::Abbrev and Search::Dict
Robin Barker [Sat, 10 Sep 2011 08:05:13 +0000 (09:05 +0100)]
fix NAME section in Text::Abbrev and Search::Dict
These modules currently warn when parsing ABSTRACT_FROM,
as the NAME section does not have the correct form; so
add "$package - " at the start of the NAME section line.
Leon Timmermans [Sun, 18 Sep 2011 10:22:30 +0000 (12:22 +0200)]
Only upgrade when necessary
Father Chrysostomos [Sun, 18 Sep 2011 05:42:58 +0000 (22:42 -0700)]
Deparse "${#}a"
Father Chrysostomos [Sun, 18 Sep 2011 05:39:17 +0000 (22:39 -0700)]
Deparse $#{/} correctly
Father Chrysostomos [Sun, 18 Sep 2011 03:47:26 +0000 (20:47 -0700)]
Make -l always treat non-bareword arguments as file names
Here is some suspicious code in Perl_my_lstat_flags:
if (SvROK(sv) && isGV_with_GP(SvRV(sv)) && ckWARN(WARN_IO)) {
Perl_warner(aTHX_ packWARN(WARN_IO), "Use of -l on filehandle %s",
GvENAME((const GV *)SvRV(sv)));
return (PL_laststatval = -1);
}
The behaviour differs depending on whether warnings are enabled.
That -1 turns into undef in pp_ftlink. So we get an undef return
value with warnings on, but a file test on a file name otherwise.
In 5.6.2, -l $foo always treated $foo as a file name.
In 5.8+, if it is a reference (ignoring magic) and the reference
points to a typeglob (ignoring magic) and io warnings are on, it warns
and returns undef.
So the only time that undef return is reached is when a warning has
been emitted, so it’s code that will likely be corrected before it
goes into production. Hence I think it unlikely that anyone could be
relying on the behaviour of -l \*foo (under warnings).
So this commit restores the 5.6 behaviour for that case.
Father Chrysostomos [Sun, 18 Sep 2011 03:16:36 +0000 (20:16 -0700)]
Make stacked -l work
Perl 5.10.0 introduced stacked filetest operators,
-x -r $foo
being equivalent to
-r $foo && -x _
That does not work with -l. It was these suspicious lines in
Perl_my_lstat_flags that drew my attention to it:
> else if (PL_laststype != OP_LSTAT
> && (PL_op->op_private & OPpFT_STACKED) && ckWARN(WARN_IO))
> Perl_croak(aTHX_ no_prev_lstat);
That croak only happens when warnings are on. Warnings are just
supposed to be warnings, unless the ‘user’ explicitly requests
fatal warnings.
$ perl -le 'print "foo", -l -e "miniperl"'
foo
$ perl -lwe 'print "foo", -l -e "miniperl"'
The stat preceding -l _ wasn't an lstat at -e line 1.
That it doesn’t die in the first example is a bug.
In fact, it’s using the return value of -e as a file name:
$ ln -s miniperl 1
$ ./miniperl -le 'print -l -e "miniperl"'
1
And, with warnings on, if the preceding stat *was* an lstat, it
falls back to the pre-stacked behaviour, just as it does when warn-
ings are off.
It’s meant to be equivalent to -e "miniperl" && -l _ (which is why the
error message above says ‘The stat preceding -l _’).
Father Chrysostomos [Sun, 18 Sep 2011 02:39:07 +0000 (19:39 -0700)]
perlglossary: fix broken link
Father Chrysostomos [Sun, 18 Sep 2011 02:32:22 +0000 (19:32 -0700)]
perlglossary: Make empty-list-as-scalar even clearer
Chas. Owens [Sun, 18 Sep 2011 02:31:09 +0000 (19:31 -0700)]
Document empty-list-as-scalar in perlglossary