use strict; use warnings; my @array = qw{ ace big cat dog egg fig gog hog }; my @newArray = @array[ reOrder( scalar @array ) ]; print qq{@newArray\n}; sub reOrder { my $length = shift; die qq{Array length not a multiple of 4\n} if $length % 4; my $low = 0; my $high = $length - 1; return map { $_ % 2 ? ( $high --, $low ++) : ( $low ++, $high --) } 1 .. $length / 2; }