use strict; use Data::Dumper; # read records my @row = ; my @data = map [split /\s*\|\s*/], @row; print Dumper(\@data), "\n\n"; my @CopyOfData; my @excluded; for my $row_index (0..$#data) { # find rows to skip if ( $data[$row_index][1] =~ /mmartin/ ) { push(@excluded, $row_index); next; } # copy everything else push(@CopyOfData, $data[$row_index]); } print Dumper(\@CopyOfData), "\n"; print Dumper(\@excluded), "\n"; # 2, 7 __DATA__ 922337219576856 |rgiles |5005444 |156 |pts/220 |9:00:44 922337219576856 |mrandall |3309650 |35 |none |9:10:44 922337219576856 |mmartin |4565899 |122 |pts/101 |9:15:44 59761456123786 |rkelly |5555555 |999 |pts/900 |9:00:00 59761456123786 |mvick |1234567 |886 |none |9:20:00 59761456123786 |jrussel |7654321 |456 |tty/101 |10:00:00 86555522211 |cklien |5151515 |000 |tty/100 |10:00:00 86555522211 |mmartin |1234567 |987 |none |11:00:00