你在printf
那里使用它认为它的第一个参数是一个格式字符串.有关详细信息,请参阅printf
文档 当我遇到这种问题时,我总是确保我正确使用这些功能.:)
你可能只想打印:
print FILE $content;
在您的示例中,您不需要读取整个文件,因为您的替换不会跨行.不要一次尝试读取和写入相同的文件名,而是使用临时文件:
open my($in), "<", $file or die "cannot open file $file\n"; open my($out), ">", "$file.bak" or die "cannot open file $file.bak\n"; while( <$in> ) { s{status=["'][\w ]*["']\s*}{}gi; print $out; } rename "$file.bak", $file or die "Could not rename file\n";
这也减少了这个命令行程序:
% perl -pi.bak -e 's{status=["\']\\w ]*["\']\\s*}{}g' file