以下のスクリプトがあります。 perl 5.8.4と5.12.4を実行すると、1が出力されますが、5.10.0では出力されません(0が出力されます)。5.8.4と5.12.4で動作するPerlスクリプトですが、5.10.0では動作しません
perl -e ' my $a=0; my $net="<*2>ColBnk<2"; if (($net =~ s/([(<])/$1/g) != ($net =~ s/([>)])/$1/g)){$a++} print $a;'
これはコード(!=
の代わりne
で文字列変数を比較するか、これは$a++
後にセミコロンが欠落しているが原因である可能性)の問題です。 ($net =~ s/([(<])/$1/g
)と($net =~ s/([>)])/$1/g
)という値を出力してデバッグしようとしましたが、両方とも同じ値を出力しています。以下のコードを参考にしてください
use strict;
use warnings;
#/mu/bin/perl -e '
my $a=0;
my $net="<*2>ColBnk<2";
my $test="<*2>ColBnk<2";
$test =~ s/([(<])/$1/g;
print "\n$test" ;
$test =~ s/([>)])/$1/g;
print "\n$test" ;
if (($net =~ s/([(<])/$1/g) ne ($net =~ s/([>)])/$1/g)){$a++;}
print "\n Value of a =$a";
#'
あなたは何か指摘してください。 助けてくれてありがとう Ashish
ご協力いただきありがとうございます。今のところ回避策を使用します:-) – CppLearner