我写这个小程序。它已编译,但它没有按预期打印数组大小。我的计划出了什么问题?
#!/usr/bin/perl -w
use strict;
use warnings;
my $primaryFeatures
= { foo => [ 'fool', 'food', 'foot' ],
bar => ['barricade'],
};
my $arraysize = $#{$primaryFeatures->{"foo"}}+1;
print $arraysize;
答案 0 :(得分:3)
您正在使用数组引用作为哈希值(正如您所希望的那样),因此您需要取消引用数组引用。
此外,如果在标量上下文中使用数组,则返回数组的大小。一般来说,您可能更倾向于使用$#
构造。
#!/usr/bin/perl -w
use strict;
use warnings;
my $primaryFeatures = {
foo => [ 'fool', 'food', 'foot' ],
bar => ['barricade'],
};
my $arraysize = @{$primaryFeatures->{foo}};
print $arraysize;
答案 1 :(得分:2)
您的计划没有任何问题。
$ cat x.pl
use strict;
use warnings;
my $primaryFeatures
= { foo => [ 'fool', 'food', 'foot' ],
bar => ['barricade'],
};
my $arraysize = $#{$primaryFeatures->{"foo"}}+1;
print $arraysize, "\n";
$ perl x.pl
3
(我在输出中添加了换行符,但这与问题无关。)
我确实找到了以下清洁工:
my $arraysize = @{ $primaryFeatures->{foo} };