代码之家  ›  专栏  ›  技术社区  ›  Vijay

Perl中的这个语句有什么问题?

  •  3
  • Vijay  · 技术社区  · 16 年前
    print "$_", join(',',sort keys %$h),"\n";
    

    它给了我一个错误:

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

    foreach my $num ( sort keys %hash )
    {
            my $h = $hash{$num};
            print "$_", join(',',sort keys %$h),"\n";
    }
    
    1 回复  |  直到 16 年前
        1
  •  14
  •   Zaid    16 年前

    不需要 "$_" . 这条线应该是:

    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 } .