Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Bizarro %+ hash slice bug in Perl 5.10 to 5.14.

by Anonymous Monk
on Jun 17, 2012 at 09:23 UTC ( #976635=note: print w/replies, xml ) Need Help??

in reply to Bizarro %+ hash slice bug in Perl 5.10 to 5.14.

I investigate :)

perldoc -v "%+"

tells me %LAST_PAREN_MATCH is implemented using Tie::Hash::NamedCapture, so a hop skip and a jump to to see what changed, a quick correlation with corelist, but nothing changed there since v5.13.11


The history did mention moving the implementation of %+ into XS, so checking perl5160delta for XS I see a bunch of changes, but nothing I think could cause this behaviour

I will note that trying to Dumper \%+ or \%- outside of get_words_* returns empty -- so its definitely scope related (perhaps pad related)

Next thing I checked is "capture", but #78266: Memory leak with named regexp captures doesn't seem related

Next I notice Tied Variables but nothing jumps out

I don't think this is documented anywhere, and I suspect it hasn't been discovered and fixed intentionally -- you should submit (perlbug) the test case for inclusion into

update: Forgot to search for %+, I found #105024: UNIVERSAL::AUTOLOAD breaks named captures/%-/%+, which could be responsible for fixing this, but Devel::Trace doesn't show any autoload / UNIVERSAL::AUTOLOAD

  • Comment on Re: Bizarro %+ hash slice bug in Perl 5.10 to 5.14.

Replies are listed 'Best First'.
Re^2: Bizarro %+ hash slice bug in Perl 5.10 to 5.14.
by tobyink (Abbot) on Jun 17, 2012 at 09:55 UTC

    Thanks for looking into it. I had seen the UNIVERSAL::AUTOLOAD bug (it's the only mention of %+ in perl516delta), but dismissed it as I don't think Test::More installs a UNIVERSAL::AUTOLOAD, and I certainly wasn't. But you're right that the bug I was seeing could have been inadvertently fixed at the same time.

    I'll submit the test case to p5p in a couple of days unless anyone can convince me in this thread that the problem is already known to the core devs and tested for somewhere.

    This bug has already bitten one of my CPAN releases. Hurray to CPAN testers for alerting me to it so quickly!

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://976635]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2018-06-22 02:13 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (120 votes). Check out past polls.