Нет необходимости в "$_"
. Эта строка должна быть:
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 }
.