Perl   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 为什么map()掩码’undefined value’错误?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道为什么在第二个片段中调用映射使得’未定义的值’错误消失了?
use Strict;
use warnings;
my $x;
my @a = @{ $x }; # error: Can't use an undefined value as an ARRAY reference

相比于:

use Strict;
use warnings;
my $x;
my @a = map $_,@{ $x }; # no error,@a is empty

解决方法

是因map()做了别名的方式(它本质上是使用for()循环).正在发生的事情是,在l值上下文中使用了isf,因此正在使用 auto-vivified.

你的前一个例子中,你正在尝试直接在r值上下文中使用aref,这就是为什么它会生成错误(因为没有自动生成).

您可以简化对()的使用测试,您将得到与map()相同的结果:

use warnings;
use Strict;

my $x;

for (@{ $x }){
    print "$_\n";
}

…没有输出.

为了在视觉上看到$x被自动生成为数组引用,可以使用ref()函数:

@H_666_2@my $x; my @a = map $_,@{ $x }; print ref $x;

输出:

ARRAY

大佬总结

以上是大佬教程为你收集整理的perl – 为什么map()掩码’undefined value’错误?全部内容,希望文章能够帮你解决perl – 为什么map()掩码’undefined value’错误?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。