foreach(@records) { my @flds=split /\|/; push @{$final[$keys{$flds[3]}||0]},$_; }