my @data = ; chomp @data; my $iData = 0; my $iColor = 0; my @color = qw(Red White White White White Blue); my @result; while ($iColor < @color && $iData < @data){ if ($data[$iData] =~ /$color[$iColor]/){ push @result, $iData; $iColor ++; } $iData ++; } $iData = $result[0] -1; $iColor = 1; while ($iColor < @color && $iData >= 0){ if ($data[$iData] =~ /$color[$iColor]/){ unshift @result, $iData; $iColor ++; } $iData --; } print "$data[$_]\n" for (@result); __DATA__