use strict; use warnings; my %files; for my $file (<*.abc>) { open my $fh, '<', $file or die $!; while (<$fh>) { push @{ $files{$file} }, $1 if /FREQ\s+([\d.]+)/; } close $fh; } print "$_ FREQ @{ $files{$_} }\n" for keys %files; #### file3.abc FREQ 27.047 400 file1.abc FREQ 33.3 2.22 file2.abc FREQ 12345.67