我不知道爲什麼我的字符串仍然是空的時候纔打這個代碼後輸入:爲什麼我的字符串仍然是空的?
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我在什麼類型,它是由打印命令呈現,但是當我只需點擊進入,什麼都不是打印出來。我想要的是讓perl瞭解何時用戶什麼都不輸入,並自動編輯字符串,在這種情況下,是test.txt。我究竟做錯了什麼?
謝謝!
我不知道爲什麼我的字符串仍然是空的時候纔打這個代碼後輸入:爲什麼我的字符串仍然是空的?
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我在什麼類型,它是由打印命令呈現,但是當我只需點擊進入,什麼都不是打印出來。我想要的是讓perl瞭解何時用戶什麼都不輸入,並自動編輯字符串,在這種情況下,是test.txt。我究竟做錯了什麼?
謝謝!
因爲「輸入」不等於無 - 它等於\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;
匹配的空白。
爲了得到你想要的結果你必須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";
非常感謝!我一直在堅持這個很長一段時間:P我甚至從來沒有想過把輸入作爲\ n,只是認爲它忽略了對輸入的請求。正如你可能想到的,我是Perl的新手。我使用了$ file =〜/^\ s * $ /,它的工作方式與我想要的一樣。謝謝! – Timmy
沒問題,快樂的編碼!請記住接受答案(綠色複選標記),如果這對您有幫助 - 它會讓我更加無意義的互聯網點:) –
如果您還有其他問題,請爲此打開一個新問題 - 這不是正確的方法它。 –