I sorta like:
use strict;
use warnings;
my @array = (1 .. 8);
my @other;
while (@array) {
push @other, @array[-1, 0, 1, -2];
splice @array, 0, 2;
splice @array, -2, 2;
}
print "@other";
but it'd be nice to clean up the splices in some fashion. Of course if you don't want to destroy the original array you could:
use strict;
use warnings;
my @array = (1 .. 8);
my @other;
push @other, @array[-$_ * 2 - 1, $_ * 2, $_ * 2 + 1, -$_ * 2 -2]
for 0 .. $#array / 4;
print "@other";
Perl is environmentally friendly - it saves trees