Из справки Perl :
-n assume "while (<>) { ... }" loop around program
Это чисто текстовая операция, поэтому она дает эту программу:
while (<>) { $_{$F[0]}+=$F[1]}print"$_ $_{$_}"for keys%_;{ }
Это злоупотребление переключателем -n
, поскольку цикл while закрывается рано из-за несоответствия }
в исходной программе. Но закрывающий }
, добавляемый переключателем -n
, все равно должен что-то совпадать, и поэтому в конце программы должен быть дополнительный {
, хотя он ничего не делает.
Другими словами, единственная причина, по которой последний {
- это отсутствие синтаксической ошибки.