2011-07-27 33 views
0

比較字符串我有一個Perl代碼來比較兩個字符串在Perl

第一個字符串我從解析URL內容得到(比如說$版本,它的價值是CVP-最新-5.3.4.iso)

另一個字符串,我打開一個本地文件(info.txt)並閱讀它。該文件只有1串(說$ oldversion其價值CVP-最新-5.3.4.iso)

我得到這些都是字符串到$版本,之後$ oldversion

我做

if ($version ne $oldversion) 
{ 
print "Im doing something here\n"); 
unlink(info.txt); 
open file info.txt 
print $version to into.txt 
close info.txt 
} 
else 
{ 
print "ERROR\n"); 
} 

在這裏您可以看到$ version和$ oldversion是否匹配,將打印出錯信息。 一切工作正常,直到:

當我打開文件info.txt並手動編輯(我將按退格鍵,然後將再次鍵入相同的charectores),然後保存並退出。

即使現在$ version和$ oldversion應該具有相同的內容,因爲我按下退格鍵並稍後進入相同的被刪除的charector。

現在,當我運行腳本時,我可以看到IF循環變爲TRUE而不是FALSE。 由於內容相同,所以IF應該變爲FALSE,但它的確如此。

我不知道發生了什麼事。我試着在IF語句前後打印$ version和$ oldversion,它會打印出相同的完全相同的值,但IF會變爲TRUE。 我把文件內容看作是folows。

my $oldversion = <FILE>; 
+3

你是如何從文件中讀取?也許在$ oldversion或$ version上有一個尾隨的換行符。 –

+0

是的,我只是在文件的內容中查看了一個尾隨的換行符。我如何閱讀沒有新的行? – mac

+2

'perldoc -f chomp' –

回答

2

你可以試試這個:

my $oldversion = <FILE>; 
chomp($oldversion); 
+0

謝謝.. :)但是當程序寫入文件並從中讀取時,它會刪除「o」嗎? – mac

+3

@mac - chomp()只會改變尾隨的換行符(或者更確切地說,無論在$ /中) – frezik