比较perl中的字符串变量

时间:2013-03-28 17:33:00

标签: string perl

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

有任何帮助吗?谢谢!

1 个答案:

答案 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;
}