正規表現のパターンの中に変数を書くとおかしくなりますが、どうしたらいいでしょうか。

やりたいこと:「hoge」の後ろがカンマか行末の場合を抽出したい

$pat = "hoge[,\$\]";
if( $str =~ m/$pat/ ){...}

こう書くと $pat が「hoge[,$]」になることはデバッガで確認できたのですが、思った通りのマッチになりません。マッチングの部分に $pat ではなく定数で「hoge[,$]」と書けばマッチングします。

どう書いたらいいでしょうか?