use Data::Dumper; my %names; open my $fh, '<', $filename or die $!; while( my $line = <$fh> ) { chomp $line; my ($name) = $line =~ m! \A 1\. (.*) \z!x; next unless $name; $names{$name}++; } close $fh; print Dumper \%names;