arrays - 为什么 Perl 在布尔上下文中将具有单个 undef 值的数组评估为真?
问题描述
为什么这段代码不打印“2”?
#!/usr/bin/perl
sub get_undef() {
return undef;
}
my $test1 = get_undef;
my @test2 = get_undef;
print "1\n" unless ($test1);
print "2\n" unless (@test2);
解决方案
您的@test2
数组包含一个值 ( undef
)。
条件将数组置于标量上下文中,这导致数组的大小 (1)。
如果您想$test
未定义并且@test2
为空,则可以return;
从您的子目录中。
推荐阅读
- haskell - 编程语言中参数化多态函数(不是临时多态)操作的全部空间是多少?
- python - 如何从python中的1个字符串中删除特定的case元素
- c# - Trying to Download File(s) from a List
variable into a zip file - javascript - cannot be cast to java.lang.String Expo
- python - multiply columns based on values in other column
- javascript - React call to different files
- r - How to right two lags periods?
- python - Cannot run django-admin.py startproject in virtual environment, or at all, in Ubuntu
- windows - Mux video files with mkvmerge in a batch with dynamic amount of files
- javascript - 禁用单选按钮控件 MVC C# 的客户端验证