use strict; use warnings; use English q{-no_match_vars}; my @range = (6030 .. 6090); #my @range = (4000 .. 6200); my $rxExtract; { local $LIST_SEPARATOR = q{|}; $rxExtract = qr{bn(@range),}; } my %frequencies = (); while () { next unless m{$rxExtract}; $frequencies{$1} ++; } my $outFile = q{freq.out}; open my $outFH, q{>}, $outFile or die qq{open: $outFile: $!\n}; print $outFH qq{$_ - }, exists $frequencies{$_} ? qq{$frequencies{$_}\n} : qq{0\n} for @range; close $outFH or die qq{close: $outFile: $!\n}; __END__ base1,Thu 21Dec06 08:00:02 ,62bn6085, bytes 608584 base1,Thu 21Dec06 08:00:07 ,63bn5600, bytes 77383 base2,Thu 21Dec06 08:00:18 ,65bn6085, bytes 88373 base5,Thu 21Dec06 08:00:19 ,66bn6042, bytes 388377 base4,Thu 21Dec06 08:03:44 ,81bn4370, bytes 8956003 base6,Thu 21Dec06 08:03:57 ,82bn4512, bytes 7783 base3,Thu 21Dec06 08:01:03 ,06bn5600, bytes 77383