2013-10-21 37 views
1

我不知道爲什麼我的字符串仍然是空的時候纔打這個代碼後輸入:爲什麼我的字符串仍然是空的?

$file = <>; 
if ($file eq "") { 
$file = "test.txt"; 
} 
print "$file"; 

如果我在什麼類型,它是由打印命令呈現,但是當我只需點擊進入,什麼都不是打印出來。我想要的是讓perl瞭解何時用戶什麼都不輸入,並自動編輯字符串,在這種情況下,是test.txt。我究竟做錯了什麼?

謝謝!

+0

非常感謝!我一直在堅持這個很長一段時間:P我甚至從來沒有想過把輸入作爲\ n,只是認爲它忽略了對輸入的請求。正如你可能想到的,我是Perl的新手。我使用了$ file =〜/^\ s * $ /,它的工作方式與我想要的一樣。謝謝! – Timmy

+0

沒問題,快樂的編碼!請記住接受答案(綠色複選標記),如果這對您有幫助 - 它會讓我更加無意義的互聯網點:) –

+0

如果您還有其他問題,請爲此打開一個新問題 - 這不是正確的方法它。 –

回答

6

因爲「輸入」不等於無 - 它等於\n

$file = <>; 
if ($file eq "") { 
$file = "test.txt"; 
} 
print length($file); 

運行此操作,命中ENTER,並觀看,因爲你得到 - 1!

嘗試:

$file = <>; 
if ($file eq "\n") { 
$file = "test.txt"; 
} 
print "$file"; 

記住,\n是不可移植的跨系統。你真的什麼是一樣的東西:

$file = <>; 
if ($file =~ /^\s*$/) { 
$file = "test.txt"; 
} 
print $file; 

匹配的空白。

3

爲了得到你想要的結果你必須chomp你的線。

use strict; 
use warnings; 

chomp(my $file = <>); #remove newline. $file will have empty string if only a newline was entered. 
if ($file eq "") { 
$file = "test.txt"; 
} 
print "$file\n"; 
相關問題