我有两个关于 Perl 的问题open
功能:
1)我好像记得从Perl 最佳实践的 3 参数版本open
比两个参数版本更好,例如
open(OUT, '>>', $file);
vs.
open(OUT, ">>$file");
这是为什么?前几天我试图告诉某人使用 3 参数版本,但似乎无法用任何东西来支持它。
2)我似乎还记得自动激活的文件句柄比裸字文件句柄更受青睐(他们称之为不同的东西)?并且也不记得为什么,例如
open(my $out, '>>', $file);
vs.
open(OUT, '>>', $file);
Is it a strict
事物?我似乎记得能够使用OUT
with strict
但我不记得了。
- 使用类型团作为文件句柄(例如
OUT
)不是一个好主意,因为它们在整个程序中是全局的 - 您需要确保没有其他例程(包括模块中的例程)使用相同的名称(包括将来的例程)。
- 使用 open 的两个参数形式会使您的应用程序遭受由包含特殊字符的变量引起的错误行为,例如
my $f; open $f, ">$some_filename";
暴露在错误中$some_filename
包含一个领先的>
将改变程序的行为。
使用三参数形式可以通过将模式和文件名分隔成单独的参数来避免这种情况,这样它们就不会相互干扰。
此外,使用带有管道的大量参数形式是一个非常好的主意:
open $pipe, '|-', 'sendmail', '[email protected] /cdn-cgi/l/email-protection';
比将所有操作作为单个字符串更好 - 它避免了可能的 shell 注入等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)