in reply to Extracting array elements on either side of a match
unshift is useful for this:
#! perl -slw use strict; chomp( my @data = <DATA> ); my $i = 0; ++$i until $data[ $i ] =~ m[Red]; my $saved = $i; my @desired = $data[ $i ]; for ( 1 .. 4 ) { --$i until $data[ $i ] =~ m[White]; unshift @desired, $data[ $i-- ]; } --$i until $data[ $i ] =~ m[Blue]; unshift @desired, $data[ $i ]; for ( 1 .. 4 ) { ++$saved until $data[ $saved ] =~ m[White]; push @desired, $data[ $saved++ ]; } ++$saved until $data[ $saved ] =~ m[Blue]; push @desired, $data[ $saved ]; print for @desired; __DATA__
|
|---|