考虑Perl中的以下程序。
use strict;
use warnings;
my @foo = qw(a b c);
undef = shift @foo;
print scalar @foo;
这将死于一个错误消息:
尝试修改只读值...
使用constat会产生不同的错误:
1 = shift @foo;
无法修改标量赋值中的常量项...
执行...因编译错误而中止。
如果我们这样做:
(1) = shift @foo;
所有这些对我都有意义。但是推杆 undef
在列表中将起作用。
(undef) = shift @foo;
现在打印 2
。
当然,如果您有一堆返回值并且只想要特定的值,这是常见的做法,例如:
my (undef, undef ,$mode, undef ,$uid, $gid, undef ,$size) = stat($filename);
第9行代码示例 perldoc -f undef 显示了这一点,但没有解释。
我的问题是,Perl如何在内部处理这个问题?