&ipdiscover
- 永遠不會調用函數一樣,除了當你知道所有的副作用。如有疑問,請做ipdiscover()
。
不要將字符串與==
運算符進行比較:將參數強制轉換爲數字。如果它看起來不像一個數字,你會得到零。所以$input == "quit"
對於大多數$input
很可能是真的。
但是,if
語句是根據塊定義的,而不是以語句形式定義的(如在C中)。因此,你必須做
if ($input eq "quit") {
exit;
}
或者簡寫:exit if $input eq "quit";
。但你爲什麼要這麼做? exit
終止整個程序。
另一方面,until(($input eq "quit")||($input eq "q"))
是一個正確的終止條件,並且在修復$input
的範圍後,將按預期工作。
我想你應該寧可做到以下幾點,因爲這種處理輸入更好的結尾(在Linux例如:一個按Ctrl-d時,Windows;按Ctrl-Z):
use strict; use warnings; # put this at the top of every program!
while(defined(my $answer = prompt("type q or quit to exit: "))) {
last if $answer eq "q"
or $answer eq "quit"
}
sub prompt {
my ($challenge) = @_;
local $| = 1; # set autoflush;
print $challenge;
chomp(my $answer = <STDIN> // return undef);
return $answer;
}
你可以退出循環通過說這是last
迭代。
爲什麼你在一個條件中使用'=='而另一個在字符串中使用'eq'? – squiguy
它不編譯。 「 – Toto
do print」輸入I.P地址查找發現名稱「。」\ n「; &ipdiscover; 打印「輸入q退出並繼續任何其他單詞」。「\ n」; my $ input =; chomp($ input); ($ input eq「q」)||($ input eq「quit」));如果(($ input eq「q」)) (($ input eq「quit」)||($ input eq「q」)); –
JustCoder