in reply to seaching for replacement

The case sensitivity issue is simple, use "i" with your s/ to make the operation "case insensitive":
$line =~ s/(\S+)/$dict{$1} || $1/egi;
The problem with "man-kind" is this: \S includes "-", but \w does not!
my ( $key, $val ) = /^(\d+)\s+(\w+)/;
If you print the value of your keys, I think you will find #4 is just "man".

By the way, the "key" to a hash is it's name. The "value" of a hash is the data it contains. Altho it will not affect the functioning of your code, you have this nomenclature backward in the code which creates the dictionary.