开始 Perl <STDIN>

  • 本文关键字:STDIN Perl 开始 perl
  • 更新时间 :
  • 英文 :


这是一个非常简单且非关键的问题。我有一些亿万年前的编程背景(从FORTRAN开始,那是很久以前的事了),并且正在努力使用Simon Cozen的Beginning Perl学习perl编码的一些基础知识。第2章的作业包括编写一个简单的程序来解释整数条目(<STDIN>)和打印等于数字的十进制整数。我有Windows 7。输入整数时,程序输出警告

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

然后它会打印正确的十六进制数。

代码是

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

当我更改程序以输出八进制时,我没有收到警告。

警告指出非法数字出现在打印行,即使它引用了 STDIN 行。它与回车键有关吗?如果是这样,为什么同一程序的oct版本没有问题?

问题是$number里面仍然有行终止符; 使用chomp将其删除。

与十六进制函数不同,oct 函数去除非数字。 来自文档"前导空格将在没有警告的情况下被忽略,任何尾随的非数字也是如此"

你不必使用 chomp 吗?

$number = <STDIN>;
chomp $number; # Line added in by me
print hex($number), "n";

或者你可以在变量周围加上括号,如下所示:

chomp ($number); # With parenthesis

最新更新