use strict; use warnings; use Data::Dumper; my @records = ( [ qw{ 922337219576856 rgiles 5005444 156 pts/220 9:00:44 } ], [ qw{ 922337219576856 mrandall 3309650 35 none 9:10:44 } ], [ qw{ 922337219576856 mmartin 4565899 122 pts/101 9:15:44 } ], [ qw{ 59761456123786 rkelly 5555555 999 pts/900 9:00:00 } ], [ qw{ 59761456123786 mvick 1234567 886 none 9:20:00 } ], [ qw{ 59761456123786 jrussel 7654321 456 tty/101 10:00:00 } ], [ qw{ 86555522211 cklien 5151515 000 tty/100 10:00:00 } ], [ qw{ 86555522211 mmartin 1234567 987 none 11:00:00 } ], ); my @excludeThese = qw{ rgiles mrandall rkelly mvick jrussel cklien }; my $rxExclude = do { local $" = q{|}; qr{(?:@excludeThese)}; }; my @excluded; foreach my $idx ( reverse 0 .. $#records ) { unshift @excluded, splice @records, $idx, 1 if $records[ $idx ]->[ 1 ] =~ $rxExclude; } print Data::Dumper->Dumpxs( [ \ @records, \ @excluded ], [ qw{ *records *excluded } ] ); #### @records = ( [ '922337219576856', 'mmartin', '4565899', '122', 'pts/101', '9:15:44' ], [ '86555522211', 'mmartin', '1234567', '987', 'none', '11:00:00' ] ); @excluded = ( [ '922337219576856', 'rgiles', '5005444', '156', 'pts/220', '9:00:44' ], [ '922337219576856', 'mrandall', '3309650', '35', 'none', '9:10: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' ] );