2012-04-22 11 views
5

これは非常に簡単で重要ではない質問です。私はいくつかのプログラミングの背景を前に(FORTRANで始まった、それはずっと前です)、Simon CozenのBeginning Perlを使ってperlコーディングの基礎を学んでいます。第2章割り当てには、整数エントリ(<STDIN>)を解釈し、その数に等しい10進整数を出力する簡単なプログラムを記述することが含まれます。整数が入力されると、プログラムは警告を出力します。Beginning Perl <STDIN>

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

正しい16進数が表示されます。私は出力に私は警告を取得しない進をプログラムを変更する場合

コードが

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

です。

STDIN行を参照していても、印刷行に不正な数字が表示されるという警告が表示されます。 Enterキーと関係がありますか?もしそうなら、なぜ同じプログラムのoct版に問題はないのですか?

答えて

8

問題は、$numberにラインターミネータが残っていることです。それを削除するにはchompを使用してください。

+1

特に、 'chomp($ number = );は慣用です。 – Sean

+0

詳細については、 'perldoc -f chomp'を参照してください。 – shawnhcorey

0

16進数の関数とは異なり、oct関数は非数を取り除きます。 "先行する空白は、警告なしで無視され、末尾には数字もありません"

関連する問題