[英]How do I force list or scalar context in Perl?
我对Perl中的列表和标量上下文的一些细节有点困惑,我希望有人可以帮我一点。 我的最终目标是比较两个数组中的元素数量,除了其中一个数组是一个匿名数组,我不知道让Perl告诉我它有多少元素。 这是我在调试器中输入的内容:`
DB<10> @a = ([1,2,3,4],[5,6,7,8,9],[10,11])
DB<11> @b = $a[1]
DB<12> $c = @b
DB<13> p $c
1 # Why didn't this print out 5?
DB<14> $d = $a[1]
DB<15> p @$d
56789
DB<16> p $$d
Not a SCALAR reference at (eval 17)[/opt/local/lib/perl5/5.8.9/perl5db.pl:638] line 2.
DB<17> @e = @a[1]
DB<18> p @e
ARRAY(0x87c358)
DB<19> p ${@e}
我尝试了有趣的角色组合,有人可以告诉我我做错了什么吗? 谢谢。
[]
将创建一个数组引用(这是一个标量)。
$a[1]
指向[5,6,7,8,9]
(数组引用)
@b = $a[1]
将创建一个包含一个项目的新数组(数组引用)。
您需要取消引用arrayref。
@b = @{$a[1]}
此时您可以获得其中的项目数:
print scalar @b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.