http://qs321.pair.com?node_id=1228550


in reply to Re: Case where '( shift @_ )[ 0, 0 ]' returns only one value?
in thread Case where '( shift @_ )[ 0, 0 ]' returns only one value?

Looks like some kind of change somewhere between 5.18.4 and 5.20.3:
[~]$ perlbrew exec perl -le '@_ = qw( a b c ); @A = ( shift @_ )[ 0, 0 + ]; print @A' [...] perl-5.22.2 ========== aa perl-5.20.3 ========== aa perl-5.18.4 ========== a perl-5.16.3 ========== a perl-5.14.4 ========== a

Replies are listed 'Best First'.
Re^3: Case where '( shift @_ )[ 0, 0 ]' returns only one value?
by stevieb (Canon) on Jan 14, 2019 at 21:52 UTC

    I confirm these findings (on Perl running on Windows at least).

    > berrybrew exec perl -le "@_ = qw( a b c ); @A = ( shift @_ )[ 0, 0 ] +; print @A" perl-5.28.1_64 ============== aa perl-5.20.3_64 ============== aa perl-5.18.4_64 ============== a

      I was going to just edit my post after I got my perlbrew available issue sorted (which I did), but this warrants a new post.

      In 5.10, it produces the result aa that is expected by OP:

      spek@scelia ~/scratch $ perlbrew exec perl -le '@_ = qw( a b c ); @A = + ( shift @_ )[ 0, 0 ]; print @A' perl-5.27.10 ========== aa perl-5.26.1 ========== aa perl-5.20.0 ========== aa perl-5.18.4 ========== a perl-5.10.1 ========== aa

      Going full out, and am installing as many versions as I can to see where it "broke", where it "fixed" and where it "broke" again. Help desired.

      Update: To further, on Unix, it "works" up to 5.12.5, from my testing so far, then goes awry:

      spek@scelia ~/scratch $ perlbrew exec perl -le '@_ = qw( a b c ); @A = + ( shift @_ )[ 0, 0 ]; print @A' perl-5.27.10 ========== aa perl-5.26.1 ========== aa perl-5.20.0 ========== aa perl-5.18.4 ========== a perl-5.16.0 ========== a perl-5.14.4 ========== a perl-5.12.5 ========== aa perl-5.10.1 ========== aa