-1

该程序不会打印字符串是否相等,但是当它们打印时,它们似乎是相同的......请有人解释一下

#!/usr/bin/perl

$str =  "print \"I want this to work\\n\";";
print $str."\n";
open FILE, "<", "check2.doc" or die "buhuhuhu";
my $str2;
while (<FILE>) {
$str2 = $_;
}
close FILE;
print "$str2\n";
if ( $str eq $str2) {
print "they are equal\n";

但是当输出出现时,由于第二个字符串 $str2 在底部有这条额外的行

print "I want this to work\n";
print "I want this to work\n";
-----empty line-----

这是文件 check2.doc

print "I want this to work\n";

有谁知道他们为什么不相等???

4

2 回答 2

0

文件中的行由

$str."\n"

当然不等于

$str

您需要删除尾随的换行符。

my $str2 = <FILE>;
chomp($str2);
于 2013-08-06T20:42:16.047 回答
0

读取的文件包括\n,因此您必须将其删除:

$str2 = $_;
chomp $str2;

而且,如果您的文件只有一行,请将 while 循环替换为:

$str2 = <FILE>;
chomp $str2;
于 2013-08-06T17:45:24.077 回答