作者: Bruce.
日時: 2007/6/01(23:58)
Bruce.です。

藤岡和夫 さんは書きました (2007/06/01 23:12):
> use strictにしても、
> perl5.005_03とperl5.8のいずれでも動作は変わりませんね。コマンドラインで
> は動いてしまいます。
> 
> use strict;
> $_ = "sssss";
> #if(s/(?{system("dir");})/$1/){
> if(s/((?{print "Hello!";}))/$1/){
> 	print "$_: true\n";
> }else{
> 	print "false\n";
> }

あー、それは正規表現の中身が固定文字列だからですよ >エラーにならない。
/$pattern/ のように、変数のinterpolationがないとひっかかりません。
今回も外の環境から取り込んできたデータの話なんで、固定文字列での
チェックはあまり意味がないっす。

When "use re 'eval'" is in effect, a regex is allowed to contain "(?{... })"
zero-width assertions even if regular expression contains variable
interpolation. That is normally disallowed, since it is a potential security
risk. Note that this pragma is ignored when the regular expression is
obtained from tainted data, i.e. evaluation is always disallowed with
tainted regular expressions. See "(?{ code })" in perlre.


-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?
  mail kbk at kt.rim.or.jp
        web  www.kt.rim.or.jp/~kbk/zakkicho/
             homepage3.nifty.com/farstar/

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
        web  www.kt.rim.or.jp/~kbk/zakkicho/
             homepage3.nifty.com/farstar/