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...
|