2009-03-03 47 views
2

我不知道我可能是做錯了這個簡單的交易,但它不工作:爲什麼在比較Perl中的輸入行時遇到問題?

print "OK? (y or n)\n"; 
$ans = <>; 
print "\n"; 
if($ans eq "y"){print $ans;} 

我基本上想知道如何測試用戶輸入。這個小小的代碼不適合我。如果用戶輸入了y,我只是試圖打印$ans

有什麼建議嗎?

編輯: - 我也曾嘗試單引號

回答

14

你正在做一件事情錯了。 (1)當您想要<STDIN>時,請不要使用鑽石操作員(<>)。鑽石操作員也將讀取@ARGV中的文件,這可能不需要。

(2)$ ans永遠不會等於「y」,除非您先踩下它。它最後會有一個換行符。

+0

謝謝,爲什麼eff會在\ n上標記?因爲我打入輸入註冊我的答案?它應該自動chomp,如果你問我... – CheeseConQueso 2009-03-03 21:32:41

1

雖然你直接的問題已經回答了,你可能想看看像替代

5

一個解決所有的神祕內容變量:

use Data::Dumper; 
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form 
$Data::Dumper::Terse = 1; 
print '$ans is really: ', Dumper($ans); 
相關問題