在Perl中编码时,真的应该使用外部命令吗?我看到它的几个缺点.它不是系统独立的,也可能存在安全风险.你怎么看?如果没有办法,你必须使用Perl的shell命令,那么执行该特定命令最安全的方法是什么(比如检查pid,uid等)?
解决方法
这取决于在Perl中复制功能的难易程度.如果我需要在某些东西上运行m4宏处理器,我不会想到尝试在Perl中复制该功能,并且因为
http://search.cpan.org/上没有看起来合适的模块,所以看起来其他人同意我的看法.那么,在那种情况下,使用外部程序是明智的.另一方面,如果我需要读取目录的内容,那么在Perl中readdir()et al和stat()或lstat()的组合比ls的输出更加明智.
如果需要执行命令,请仔细考虑如何调用它们.特别是,你可能想避免shell解释参数,所以使用system
的数组形式(参见exec
)等,而不是命令加参数的单个字符串(这意味着shell用于处理命令)线).