Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么我会得到'Can';t在…`错误处使用未定义的值作为符号引用?_Perl_Runtime Error - Fatal编程技术网

Perl 为什么我会得到'Can';t在…`错误处使用未定义的值作为符号引用?

Perl 为什么我会得到'Can';t在…`错误处使用未定义的值作为符号引用?,perl,runtime-error,Perl,Runtime Error,在我的程序中,我得到一个错误: $ perl -e 'print $i +0' Can't use an undefined value as a symbol reference at -e line 1. 但接下来的两个很好: $ perl -e 'print $i' $ perl -e 'print 0 +$i' 0 第一种情况有什么问题?语句print$i+0不同,因为$i可能是一个有效的文件句柄。但是,当perl尝试将其作为一个函数使用时,它失败了,因为它是undef perl用来

在我的程序中,我得到一个错误:

$ perl -e 'print $i +0'
Can't use an undefined value as a symbol reference at -e line 1.
但接下来的两个很好:

$ perl -e 'print $i'
$ perl -e 'print 0 +$i'
0

第一种情况有什么问题?

语句
print$i+0
不同,因为
$i
可能是一个有效的文件句柄。但是,当perl尝试将其作为一个函数使用时,它失败了,因为它是
undef


perl用来确定您是否尝试使用文件句柄的精确规则是神秘的,但是简单地删除
$i
后面的空格会阻碍这种解释,并打印表达式
$i+0
,语句
打印$i+0
是不同的,因为
$i
可能是一个有效的文件句柄。但是,当perl尝试将其作为一个函数使用时,它失败了,因为它是
undef


perl用来确定您是否试图使用文件句柄的精确规则是晦涩难懂的,但简单地删除
$i
后的空格会阻碍这种解释,并打印表达式
$i+0
,而不是啊,
间接对象调用
。我错过了。不,在这种情况下,它不是一个间接对象调用,因为
print
不是一个方法。它只是一个可选的第一个参数。@Borodin这是正确的,但它与此处应用的基本解析规则完全相同,也允许所谓的“间接对象”方法dispatch syntax.ah、
间接对象调用中的invocant。我错过了。不,在这种情况下,它不是一个间接对象调用,因为
print
不是一个方法。它只是一个可选的第一个参数。@Borodin这是正确的,但它与此处应用的基本解析规则完全相同,也允许在所谓的“间接对象”方法分派语法中使用invocant。