【Perl】置換演算子のあたりでSoftware error発生?

Perlは、よくわからん……といえども、エラーが出たら解決せねば。

【エラーの内容】
・今まで動いていた(2年前ぐらいにテスト済み)メールフォームが突然、メールを送ろうとすると以下のエラーが表示されるようになった。

Software error:

Invalid [] range “A-0” in regex; marked by <-- HERE in m/<[A-0 <-- HERE 4]繝ゥ繝・スけ繝繧、(・ス・700)>/ at functions.cgi line 289.
For help, please send mail to the webmaster (admin@xxxxxxxx), giving this error message and the time and date of the error.

【エラーが出ているところ】
$config{“return_body”} =~ s/<${key}>/$repchar{$key}/g;
$config{“posted_body”} =~ s/<${key}>/$repchar{$key}/g;

【試したことと結果】
#を付けて回避 → メールが普通に遅れるようになった。
 メールの中で 自動返信メールには <姓>様 として、メールフォームで「姓」「名」でinputされた「姓」が置換されるようになっている。
 その置換の部分だったので、<姓>様がそのまま表示されるようになった。

 とりあえず急いでいたから、<姓>様を削除して対処。

【勉強したこと】
 まず
「$config{“return_body”} =~ s/<${key}>/$repchar{$key}/g;」で正確になにやってるかわからなかった。何となく置換だろうなぁってぐらいで。
「=~」で検索して、
Perlのパターンマッチで演算子ってどうやって使うの?
を読んで(ありがとうございます!!)

「s」が置換演算子だということを知る。

エラーの内容については
perldiag – さまざまな Perl 診断メッセージ 【perldoc.jp】を参考にしました(ありがとうございます!!)

Invalid [] range “%s” in regex; marked by <-- HERE in m/%s/ (F) 文字クラスに指定した範囲の最小値が、最大値よりも大きくなっています。 ひとつの可能性としては、末尾の \x{} から {} を 忘れているということです - 中かっこなしの \x は ff までにしか なりません。 <-- HERE で正規表現のどこに問題が発見されたかを示しています。 perlre を参照してください。

ということで……。文字化けしとうしさ……。文字コードなのかなぁ……。と思ったけど、<姓>をにしてもあかんかった。

今まで動いてたのが動いてないってのは、サーバーの情報が変わったんだと思うんですけど、そんな情報サーバー業者サイトから見つからない。
結構昔の変更なのかねぇ。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です