Bra*_*don 0 perl string-comparison
我正在尝试执行一个简单的检查以查看字符串是否包含"%",但每当我执行我的代码时,无论字符串中的内容是什么,它都会将if语句评估为false.我的代码看起来像这样:
if ($end_time =~ m{%%}) {
($percentage) = $end_time =~ m/=([^%%]*)%%/g;
$percentage = sprintf("%s%%", $percentage);
$end_time = "";
}
elsif ($duration =~ m/(overdue)/) {
$percentage = "$end_time $duration";
$end_time = "";
}
else {
$percentage = "100%";
}
Run Code Online (Sandbox Code Playgroud)
和$ end_time的期望值,替换你喜欢的任何数值.
"5%" or "==30%" or "+3m:26s overdue" or "13:48:40"
Run Code Online (Sandbox Code Playgroud)
因此,如果$ end_time包含"过期"或"%"百分比将是100%,$ end_time将是检查前的任何内容.而且我确实理解为什么我得到了我得到的结果,而不是我的if语句总是评估为假的原因.
字符串文字和正则表达式文字\不是通过加倍而%转义,也不需要转义.
if ($end_time =~ m{%}) {
($percentage) = $end_time =~ m/=([^%]*)%/g;
$percentage = sprintf("%s%%", $percentage);
$end_time = "";
Run Code Online (Sandbox Code Playgroud)
sprintf采用带有doubled的字符串%来表示%,但这与构建字符串和正则表达式模式无关.