That won't work when one of the elements is 0, "", "0", undef, etc. Check the size of @one, not whether $entry is true or false.
while (@one) { push(@two, pop(@one)); }
Of course, using reverse would be even better.
.oO( Why doesn't pop return an empty list for an empty array, allowing while (my ($item) = pop(@array))? )
Update: For fun, a few ways to reverse a list:
my @b = reverse(@a); my @b = sub { my @rv; push(@rv, pop()) while @_; return @rv }->(@a); my @b = sub { my @rv; unshift(@rv, shift()) while @_; return @rv }->(@ +a); my @b = map { $a[-$_] } reverse 0..$#a; my @b = map { $a[-$_] } -$#a..0; my @b = map { $a[$_] } sort { $b <=> @a } 0..$#a; my @b = map { $a[$_] } sub { my @rv; push(@rv, pop()) while @_; return + @rv }->(0..$#a); my @b = map { $a[$_] } sub { my @rv; unshift(@rv, shift()) while @_; r +eturn @rv }->(0..$#a); my @b = @a[ reverse 0..$#a ]; my @b = @a[ map { -$_ } -$#a..0 ]; my @b = @a[ sort { $b <=> @a } 0..$#a ]; my @b = @a[ sub { my @rv; push(@rv, pop()) while @_; return @rv }->(0. +.$#a) ]; my @b = @a[ sub { my @rv; unshift(@rv, shift()) while @_; return @rv } +->(0..$#a) ];
I keep thinking of more, such as a counting loop...
In reply to Re: Reversing an array. Subroutine.
by ikegami
in thread Reversing an array. Subroutine.
by Pearte
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |