加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl中的这个陈述有什么问题?

发布时间:2020-12-16 06:10:10 所属栏目:大数据 来源:网络整理
导读:print "$_",join(',',sort keys %$h),"n"; 它给我一个错误如下: Use of uninitialized value in string at missing_months.pl line 36.1,10,11,12 这个print语句出现在for循环中,如下所示: foreach my $num ( sort keys %hash ){ my $h = $hash{$num}; pr
print "$_",join(',',sort keys %$h),"n";

它给我一个错误如下:

Use of uninitialized value in string at missing_months.pl line 36.
1,10,11,12

这个print语句出现在for循环中,如下所示:

foreach my $num ( sort keys %hash )
{
        my $h = $hash{$num};
        print "$_","n";
}

解决方法

不需要“$_”.该行应该是:

print join (',sort {$a <=> $b} keys %$h),"n";

虽然$_被视为for和foreach循环中的默认迭代器(参见perlvar),但您已经将迭代器变量指定为$num.

以下是如何在一行中正确使用$_:

print join(',sort { $a <=> $b } keys %{$hash{$_}}),"n" foreach keys %hash;

在旁注…

sort默认使用字符串比较,这意味着’10’被认为是在’2’之前.你似乎在处理几个月(也许是?),这就是为什么我使用了数字比较块{$a< => $b}.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读