英語キラキラ星を翻訳

英語キラキラ星の歌詞を日本語にする演習問題があったので一通り作ってから解答確認へ

my $song = Twincle, twincle, little star.

$song =~ s/twincle/きらきら/gi;
$song =~ s/little/小さい/gi;
$song =~ s/star/ほし/gi;

print "$song";

で、解答みたら

my %dict = (

'twinkle' => 'きらきら',
'little' => '小さい',
'star' => 'ほし',
);

while (<STDIN>) {
     while (/(\W*)(\w*)/g) {
         my ($other, $word) = ($1,$2);
         print $other;
         if (exists($dict{lc($word)})) {
             print $dict{lc($word)};
         } else {
             print $word;
         }
     }
}

自分で書いたものが酷いのはとりあえず置いといて、「ハッシュで辞書を管理する」という考え方が出てこなかったのは痛い。外部からファイル読み込みを想定してなかったってのも痛い。全体的に痛い、痛すぎる。

     while (/(\W*)(\w*)/g) {
         my ($other, $word) = ($1,$2);  #このあたり
         print $other;
         if (exists($dict{lc($word)})) { #あとこのへんと
             print $dict{lc($word)};   #ここ
         } else {
             print $word;
         }
     }

上のコメントで指定した部分はコード見ていて憧れる。このレベルのものが作れるよう精進したいと思います。