perl – printf“修改了尝试的只读值”错误

前端之家收集整理的这篇文章主要介绍了perl – printf“修改了尝试的只读值”错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试打印对象时,如下所示:

print "$response{_content} \n";
printf OUTPUT "$response{_content} \n";

printf语句生成错误“尝试修改只读值”

这是一个间歇性的错误.只会偶尔发生一次,但这个程序需要100%可靠.宕.

它可以打印到STDOUT.

我究竟做错了什么? arrgh!

解决方法

printf的第一个参数被解释为输出格式,而不是输出本身.有关详细信息,请参见 perldoc -f printfman 3 printf.

问题是,printf可能偶尔会尝试写入其args(这甚至是C programs中几个漏洞的来源),例如:

perl -we 'printf "abc%n\n",$_; print "$_\n";'

如您所见,这将$_设置为3,这是在%n发生之前写入的字符数.尝试%n没有进一步的args,你会看到OP的确切错误信息.

长话短说:除非你真的需要高级格式化,否则请使用print.保留printf r / o的第一个参数,除非你真的需要更高级的格式化.

猜你在找的Perl相关文章