我将以下perl脚本作为bash here文件运行。我的意图是从STDIN读取一个变量,然后进行算术计算然后打印。
但是,程序立即完成,无需等待STDIN的输入。
警告“在第6行的乘法(*)中使用未初始化的值$ input”在打印第4行和第6行中的2个字符串之前打印出来。请注意,没有提示读取STDIN。
为什么会这样? 我想在bash和perl脚本中组合here文档,因此可以在shell中运行包含很少行的perl脚本,而无需编写脚本文件。 (我知道perl -e选项是另一种选择,但我只是想知道为什么我的方法不起作用。)
bash-4.1$ bash
bash-4.1$ perl <<'EOF'
> use strict;
> use warnings;
> my $input;
> print "Please enter a number:";
> $input=<STDIN>;
> print 2+2*3.141592654*$input."\n";
> EOF
Use of uninitialized value $input in multiplication (*) at - line 6.
Please enter a number:2
bash-4.1$