如何插入一行到文件特定行后?

如何插入一行到文件特定行后?
比如有一文件file:
aa
xx
bb
yy
cc
我想插入dd到xx下一行,插入ff到yy上一行
我是这样的:
perl -n -p -e 's/(.*xx\n)(.*)(yy.*)/\1dd\2ff\3/' file
没用,
但这样却可以:
perl -npe 's/(.*xx\n)(.*)/\1dd\n\2/' file|perl -npe 's/(.*)(yy.*)/\1ff\n\2/'

因为要处理的文件比较多,所以上面的太耗资源了
所以我想写个perl教本来达到上面的目的,请问如何"插入dd到xx下一行,插入ff到yy上一行"(以file为例)
请考虑速度和内存问题(实际的file很大,有很多这样的file)

谢谢