>>343
}{ とかちゃんと意味わかって使ってる?
perl -pe 'CODE HERE' は
while (define($_ = <>) { CODE HERE } continue { print $_ }
に展開される(エラー処理とかも入ってるけど省略)から、
その2は
while (...) { $i++}{print$i } continue { print $_ }
となって、continue ブロックは while ブロックにではなくその外の {print$i } に紐付けられるから、最後に1回実行されるだけになる。

-p で各行を出力しつつループの外でも何かしたかったら BEGIN / END を使うのが無難。
$ perl -pe 's//$. /;END{print"$. lines\n"}'

あえて }{ を使って上と同じ結果を得たいなら
$ perl -ne 'print"$. $_"}{print"$. lines\n"'
$ perl -pe 'print"$. $_"}{$_="$. lines\n"'