
例えば以下のように記載するとエラーとなります。
if($::FORM{'body'} =~ /パターン/){
push(@error, '投稿できません');
}
しかし、以下のように記載するときちんとパターンマッチします。
このふたつともエラーが出ておかしくないと思うのですが
なぜ以下ならOKなのか教えてください!!
@word=qw(パターン);
foreach (@word) {
if (index($::FORM{'body'},$_) >= 0) {
push(@error, '投稿できません。');
}
}
No.1ベストアンサー
- 回答日時:
Shift_JIS使ってませんか?
もしそうなら、いわゆる「だめ文字」と呼ばれる問題です。
ーの2バイト目は [ です。「ー」と一文字に見えますが、Perl内部では2文字として処理されます。
そのため、メタ文字 [ に対する ] が無いのでエラーになります。
「ソ」「表」等の2バイト目が\なのは有名ですが、正規表現では、他にも注意しないといけない文字があります。
https://sites.google.com/site/fudist/Home/grep/s …
Perlで考えたら@もリストに使いますから、正規表現でなくても問題になりえます。
あと、これはPythonでの話しですが、Perlでも同じような現象が起こります。
http://oshiete.goo.ne.jp/qa/7630123.html
最近のPerlなら、
・ use utf8;してutf-8でスクリプトを記述
・入出力はencode/decodeでバイト列⇔utf8文字列の変換する。(またはPerlIOを使う)
のがいいと思います。
> if (index($::FORM{'body'},$_) >= 0) {
index関数は、文字列を単純に比較するだけです。
正規表現ではありません。なので [ が混っていても問題ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlをバージョンアップしたら...
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
Perl言語について。
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
#!/usr/bin/perlで書きだしたCG...
-
perl の open について教えてく...
-
INDIRECT 横に再度抽出したい
-
アルファベットに付いて質問し...
-
openした後、closeしないでプロ...
-
画像が表示でnull; this.src
-
VBA変数をFunction.VLookupの戻...
-
perlのflock関数でロックをかけ...
-
Perl の外部モジュールの利用方法
-
TeraPadエディターの操作方法に...
-
bashスクリプト
-
perlの構文でカンマの意味が分...
おすすめ情報