はじめまして、鷹です。

>この辞書内で同じ言葉で登録されていると
>最後に登録される方の言葉を人工無能が返事する仕様(ソース)
>になっているようですが、これを、複数のヒットした言葉の中
>からランダムに返事を返す用にするにはどうしたらいいですかね。


ちゃんとそうなっています。
はい。。。
う〜ん勉強になる質問ですね〜。
皆さんも、じゃんじゃん追求してステップアップして下さい。



>
>    @dic=<dic>;
>    close(dic);
>    foreach (@dic) {
>       chop;
>       ($in,$out)=split(/:/);
>       if ($chat =~ /$in/) {
>           push(@NEW,$_);  <<ここ
>       }
>    }


@NEWは、配列を設定しているだけです。
ここは、$chat(メッセージ)の中に、$in(キーワード)がマッチした場合、
メモリーされているデータ(@dic)を$in(キーワード)と$out(返事)を(:)で分
けた後
配列@NEWに入れなさいとなっています。
NEWだから新しいではなく、NEWという配列変数を作っただけです。
例えば、@KEYでもいいのです。



.