教えてください。
あるテキストファイルにときおり存在する1行以上の連続する空行を
<p>
の1行に圧縮するプログラムを書いているのですが、

open MYFILE, "???.txt";
undef $/;
$text = <MYFILE>;
$text =~ s/^\s*$/<p>/mg;
print $text;

これを実行すると、1行のみの空行は<p>に圧縮されますが
2行以上の連続する空行は<p><p>と圧縮されます。
正規表現の行を
$text =~ s/^\s*$/<p>/m for 1..10;
とかにすると意図した通りになります。
(もちろんこれだと10個までですが)

なぜこのような結果になるのでしょうか?