use strict; use warnings; my @files=('data.txt'); for my $input_file (@files) { my $output_file = $input_file.".out"; process_file($input_file, $output_file); } sub process_file { my($input_file, $output_file) = @_; my %count; my $file = shift or die "Usage: $0 FILE\n"; open my $fh, '<', $file or die "Could not open '$file' $!"; open my $fa, '>', $output_file; $/=""; while (my $line = <$fh>) { foreach my $str ($line) { chomp $line; $count{$str}++; } } foreach my $str (sort keys %count) { printf $fa "%-s %s", $str."\t", $count{$str}; print $fa ":".$input_file."\n"; } }