use strict; use warnings; my $in; open(my $out, ">>", "count.dat") || die "can't open count.dat: $!"; my %inE = (); my %outE = (); for (my $i = 0; $i < @ARGV;$i++) { open($in, "<", $ARGV[$i]) || die "can't open $ARGV[$i]: $!"; while (<$in>) { if (/^\$1;\d{19};\d{19};(\d+);\d+;(.*?);(.*?)$/) { $inE{$1} += 1; } elsif (/^\$2;\d{19};\d{19};(\d+);\d+;(.*?);(.*?)$/) { $outE{$1} += 1; } } } print $out "in\n"; while (my ($key, $value) = each(%inE)){ print $out "(".$key.",".$value.")\n"; } print $out "out\n"; while (my ($key, $value) = each(%outE)){ print $out "(".$key.",".$value.")\n"; }