To fix up the case sensitivity issues, we can do something like what I did here. A new rewrite of the code, will display all matches (2 or more), that follow the 'rn'/'m' rule. For example, 'stern', 'Stern', and 'stem' are all in my dictionary. S it displays all three :)
#!/usr/bin/perl -w
use strict;
open my $dict, '<', '/usr/share/dict/words'
or die "open failed: $!";
my %words;
while (<$dict>) {
chomp $_;
my $index = lc $_;
next unless $index =~ s/(m|rn)\z//i;
push @{$words{$index}{$1}}, $_;
}
while (my ($index, $word) = each %words) {
print join(" / ", @{$word->{rn}}, @{$word->{m}}), "\n"
if $word->{rn} && $word->{m};
}