此代码无法识别出似乎标识的任何键:
if( $key =~ /upsf|free|ground|sla|pickup|usps/ )
所以我把它改成了:
if( $key eq 'upsf' || $key eq 'free'
|| $key eq 'ground' || $key eq 'sla'
|| $key eq 'pickup' || $key eq 'usps' )
他们认为我们功能相同,所以我试图找出第一个失败的原因。它是在Windows 7上的XAMPP下的Perl,但它也是在Linux机器上的Apache2下的Perl。
这会在Windows和Linux上打印“搁置它”。
$key = 'upsf';
if( $key =~ /^(upsf|free|ground|sla|pickup|usps)$/ ) {
print 'ship it';
} else {
print 'shelf it';
}
答案 0 :(得分:3)
它们不是等价的,因为第一个中的比较运算符是“=〜”(“包含”), 在第二个中它是“eq”(“显式匹配,等于”)。
第一个怎么会失败? $ key的测试值是多少?
$key = 'xxx';
if( $key =~ /upsf|free|ground|sla|pickup|usps/ ) {
print 'ship it';
} else {
print 'shelf it';
}
将打印'搁置它'。 例如,$ key ='xusps'将打印'发送',匹配通过'=〜'运算符(“包含”),这可能不是您的目标。
答案 1 :(得分:0)
此代码由ClickCart Pro执行,它从文件中读取并按如下方式对其进行预处理:
$custom_script_code =~ s/\`/\'/gs;
$custom_script_code =~ s/\|\|/%7C%7C/g;
$custom_script_code =~ s/\|/ /gs;
$custom_script_code =~ s/%7C%7C/\|\|/g;
$custom_script_code =~ s/system/System/gs;
$custom_script_code =~ s/exec/Exec/gs;
$custom_script_code =~ s/die/Die/gs;
所以这里的第三个声明删除了管道。谢谢Kryptronics! (讽刺)perreal的评论已被加上。我不应该为此得到任何意见。对不起,我浪费了每个人的时间!