-1

我在 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(/\;/,$_);

有什么帮助吗?谢谢!

4

1 回答 1

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;
}
于 2013-03-28T20:33:20.493 回答