-1

perl に if 句があります。条件として、2 つの変数が文字列として一致するかどうかを比較する必要があります。しかし、私のコードは機能せず、文字列は決して一致しません:

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 に答える