Interestingly, if I pass pop a slice, it seems to operate on the last element in the slice, popping the last element from the array to which that element is a reference. If I pass it a slice of ordinary scalars (not array references) it errors. All this is since version 5.14, by the way; prior to that pop simply demands an array as the first argument. Also, perldoc -f pop says this is experimental behavior, so it'd probably be best to keep dereferencing for now and not count on this.
#!/usr/bin/env perl use Modern::Perl; use Data::Dumper; my @cards = ([qw[0 1 2 3]], [qw[4 5 6 7]], [qw[8 9 A B]], [qw[C D E F]], ); say pop @cards; # pop the last array element [C D E F] say pop @cards[0,1]; # pop from a two-element slice, gets 7 from @$ca +rds[1]; say pop @cards[0]; # pop from a one-element slice, gets 3 from @$ca +rds[0], throws warning say pop $cards[0]; # pop from a scalar array reference, gets 2 from + @$cards[0] say Dumper @cards; # see what's left in the array my @list = (0..15); say pop @list[3..5]; # error, not an ARRAY reference
Aaron B.
My Woefully Neglected Blog, where I occasionally mention Perl.
In reply to Re^2: What I am missing here
by aaron_baugher
in thread What I am missing here
by heatblazer
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |