5

これは非常に単純で重要ではない質問です。私は何十年も前にプログラミングのバックグラウンドを持っており (FORTRAN から始めた、それはずっと前のことです)、Simon Cozen のBeginning Perl を使用して perl コーディングの基本を学習しています。第 2 章の課題には、整数エントリ ( <STDIN>) を解釈する簡単なプログラムの作成と、数値に等しい 10 進整数の出力が含まれます。Windows 7 を使用しています。整数を入力すると、プログラムは警告を出力します。

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

次に、正しい16進数を出力します。

コードは

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

8 進数を出力するようにプログラムを変更すると、警告が表示されません。

警告は、STDIN 行を参照しているにもかかわらず、印刷行で不正な数字が発生したことを示しています。エンターキーと関係ありますか?もしそうなら、同じプログラムの oct バージョンに問題がないのはなぜですか?

4

3 に答える 3

8

問題は$number、行末記号がまだ含まれていることです。を使っchompて取り除きます。

于 2012-04-22T02:28:39.280 に答える
0

16 進数関数とは異なり、oct 関数は非数値を取り除きます。ドキュメントから「先頭の空白は警告なしに無視され、末尾の非数字も無視されます」

于 2012-04-22T05:23:25.333 に答える