我在perl中有一个if子句,作为条件我需要比较两个变量,如果它们匹配为字符串。但我的代码不起作用,字符串永远不匹配:
if(trim($file) eq trim($fields[0])) {
print "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO";
}
对于我使用的修剪的定义:
sub trim($)
{
my $string = shift;
$string =~ s/^\s*(.*?)\s*$/$1/;
return $string;
}
此外,我之前使用过这个变量进行比较。
my @fields= split(/\;/,$_);
有任何帮助吗?谢谢!
答案 0 :(得分:1)
您的代码是正确的,因此您的字符串不同。
为了找到差异,我建议使用以下代码,因为它会显示仅通过打印字符串可能无法察觉的差异:
use Data::Dumper;
{
local $Data::Dumper::Useqq=1;
print Dumper($file, $fields[0]);
}
顺便说一句,以下内容更优雅,也可能更快:
sub trim {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+\z//;
return $string;
}
而IIRC,以下情况甚至更快(可读性下降):
sub trim {
my $string = shift;
$string =~ s/^\s+|\s++\z//g;
return $string;
}