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/