my %reversetbl; # at the beginning # ... open each file ... while (<$fh>) { chomp; # remove newline # ... $reversetbl{$_}{$curdir}++; } # at the end: for my $k (keys %reversetbl) { print $k, ';', join(',', keys %{ $reversetbl{$k} } ), "\n"; }