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 を参照してください。
ということで……。文字化けしとうしさ……。文字コードなのかなぁ……。と思ったけど、<姓>を
今まで動いてたのが動いてないってのは、サーバーの情報が変わったんだと思うんですけど、そんな情報サーバー業者サイトから見つからない。
結構昔の変更なのかねぇ。
コメントを残す