CGI-BBS > CGI > Perl > Perlについてif文にセミコロン(;)


カレッヂ
カレッヂ


質問者 ワコボ  投稿日 2004/1/8(木) 17:20:10
#!/usr/bin/perl5
$a="multipart/form-data;";
if ($a =~ /^multipart\/form-data;
     (?:[\ \t]|\r?\n[\ \t])*boundary=([^\s;]+)/x ) {print "成功=$a";}
print "成功=$a";

以上の文ですがif文の中にセミコロン(;)があり文法的におかしいようにみえるのですが
実行ではエラーも起こらず実行できます。いったいどういった処理をしているのでしょうか?
よろしくお願いします。

PERL :active perl 5.8
OS  :windows2000
です。

プロバイダ参照:
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:秀丸
FTPソフト:FFFTP
サーバ移転:していない
改造:していない
CGI習熟度:beginner

回答者 しゅんじ  [削除]  投稿日 2004/1/9(金) 08:32:55
これはマッチングの処理をしているので、セミコロンが合っても問題なく処理します。
文法の行末セミコロンではなく、文字列のセミコロンと思えばよいかと。

後ろの正規表現を取り除いて直してみると、こんな感じですかね。

$a = "multipart/form-data;";
if ($a =~ m/^multipart\/form-data;/) {
    print "成功 = $a\n";
}

質問者 ワコボ  [削除]  投稿日 2004/1/9(金) 09:26:21
perlの正規表現は結構便利ですが、その文習得も大変ですね。
ありがとうございました。

返信(回答)する

 


Web裏技