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 "$_", join(',',sort keys %$h),"\n";
}
答案 0 :(得分:14)
不需要"$_"
。该行应该是:
print join (',' , sort {$a <=> $b} keys %$h),"\n";
虽然$_
被视为for
和foreach
循环中的默认迭代器(参见perlvar),但您已将迭代器变量指定为{{1 }}
以下是如何在一行中正确使用$num
:
$_
print join(',', sort { $a <=> $b } keys %{$hash{$_}}),"\n" foreach keys %hash;
使用字符串比较,这意味着sort
被视为'10'
之前。你似乎在处理几个月(也许是?),这就是我使用数字比较块'2'
的原因。