正規表現が上手く動作しないので、ゴリ押しでスクリプトをいじった件

今日は、Perlスクリプトをいじっている時
どうしても、ある一行のコードが通らないのでゴリ押しで作成したことを記事にします。

掲示板スクリプトをいじっていて、文字コードをShift-JISからUTF-8に置き換えたので、
その過程で、今回の問題が発生しました。
やりたかったのは、ひらがな入力を含まない投稿は、
正規表現を用いて不正とみなすことです。

早速コードを見たいと思います。

#1.Shift-JISで書かれていた元々のコード
#※正規表現ではShift-JISのひらがな、カタカナ
if ($FORM{'comment'} !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) {
    ★エラー処理 
}

#2.本来書きたかったコード
if ($FORM{'comment'} !~ /[ぁ-んァ-ヶ]/) {
   ★エラー処理★
}

#3.最終的に条件を満たして動いたコード(正規処理部分省略)
if ($FORM{'comment'} !~ /ぁ|あ|ぃ|い|ぅ|う|ぇ|え|ぉ|お|/) {
    ★エラー処理★ 
}

まず 1 ではソースの文字コードをUTF-8に変更したので動作しませんでした(当たり前)

2 が実現したかった本来の実装です。本来は[ぁ-んァ-ヶ]で実装したかったのですが、
いかんせん漢字もスルーしてしまうので、全く機能しませんでした。

3 が最終的に実装したコードです。
ゴリ押しで一字ずつ「ぁ」から「ん」まで組み込みました。
カタカナも含めようか迷いましたがコードの長さからあえて、ひらがなのみ、としました。

なぜ 2 が通らないのか調べましたが、自分では解決できませんでした。
しかし 3 は上手く動作することが分かったので、最終的に 3 を選択しました。
ちゃんとした方法があるとは思うのですが、自分の力量ではこれが限界でした。
一応動いたのでこれで良しとしました。

もし、2 のコードの不備が分かる方がいたらお知らせ願えれば幸いです。
当方は力不足なので優しめに、ご教授いただければ幸いです(´・ω・`)

ブログ主が運営しているゲームです。

 MobileFight

 ジマさんの囲碁入門