如何删除两行间含有某关建字的字符

如何删除两行间含有某关建字的字符

----------需操作的字符串------------

dn:: sfsfsfsdfsfsdfsfsfs
line: love
line: har


dn:: sfsfsfsdfsfsdfsfsfs
line: man
line: har


dn:: sfsfsfsdfsfsdfsfsfs
line: love
line: har


dn:: sfsfsfsdfsfsdfsfsfs
line: man
line: har

dn:: sfsfsfsdfsfsdfsfsfs
line: man
line: har

dn:: sfsfsfsdfsfsdfsfsfs
line: sdfsd
line: har

-----------------------------------------

我需要把含line: man所在的两行空白行间的字符删除。
我 循环执行 s/.* dn:: .*? man .*? \n{2,}/igxs  可以做到,但效率太低(要处理字符很多),请各位强人出手相助!!!!
while (my $s = <>) {
  next unless $s =~ m/^dn::/

  print $s;
  $s = <>;
  next unless $s =~ m/^line: man/;
  print $s;
  $s = <>;
  print $s;
  $s = <>;
  print $s;
}


厉害, 我都没看明白到底要干什么