比较2个字符串,一个来自文件,一个是声明的

时间:2013-08-06 17:36:55

标签: perl

这个程序不打印字符串是相同的但是当它们被打印时,它们看起来是相同的...有人请解释

#!/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";

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

2 个答案:

答案 0 :(得分:0)

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

$str2 = $_;
chomp $str2;

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

$str2 = <FILE>;
chomp $str2;

答案 1 :(得分:0)

文件中的行由

创建
$str."\n"

当然,这不等于

$str

您需要删除尾随换行符。

my $str2 = <FILE>;
chomp($str2);