求教: 如何修改文件里的一行的内容

在一个文本里,
我想把匹配good的行都改为not good

有最简单的办法吗?

我只知道一种:用钻石操作符

$^I = ".bak";
while (<>) {
   s/good/not good/g;
   print;
}

还有别的吗?  这种方法好像需要指定文件名(修改ARGV)