2012-04-22 45 views
5

這是一個非常簡單的和非關鍵的問題。我前一段編程背景億萬年(從FORTRAN,那是多久以前),並正在學習Perl中使用西蒙瞞的開始的Perl編碼的一些基本工作。第2章分配包括編寫一個簡單程序來解釋整數項(<STDIN>)並打印等於數字的十進制整數。我使用Windows 7。當輸入整數,程序輸出警告開始的Perl <STDIN>

Illegal hexadecimal digit ' 
' ignored at [path] line [the line containing the print instruction], <STDIN> line 1 

然後它打印正確的十六進制數。

的代碼是

$number = <STDIN>; 
print hex($number), "\n"; 

當我改變程序輸出的八進制我沒有得到警告。

警告說,非法的數字出現在即使它引用的標準輸入線打印線。它與輸入密鑰有關嗎?如果是這樣,爲什麼同一個程序的oct版本沒有問題?

回答

8

的問題是,$number中有線路終端仍然;使用chomp將其刪除。

+1

,特別是,'格格($數= );'是地道。 – Sean 2012-04-22 03:10:51

+0

有關詳細信息,請參閱'perldoc -f chomp'。 – shawnhcorey 2012-04-22 14:09:07

0

不同於六角功能辛功能條非數字。從文檔「開頭的空白是無預警被忽略,因爲過任何尾隨的非數字」