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。