|
|
1
6
首先,为了避免引用噩梦和shell注入的许多机会,我建议使用一个模块,比如 String::ShellQuote 那么,我不认为你需要所有的外部工具,而这么长的管道是棘手的和昂贵的。它调用了许多程序,用于在Perl中做得非常好的工作,并且需要非常精确的语法。
除了
一旦涉及到运行外部命令,就有很多选择。首先考虑使用一个模块。它们都大大简化了工作,特别是在错误检查方面,而且总体上更可靠,而有些还使更难的工作更易于管理。 一个例子 IPC::System::Simple
其他一些选项,从简单到更强大,包括 Capture::Tiny , IPC::Run3 IPC::Run 有关所有这些的更多信息,请参阅中组装的链接 this post (并搜索更多)。 我看不出有必要按目前的情况运行管道 但是如果有一个(留在远程主机上?),那么按照上面的方式生成命令,然后组装完整的管道
世界上仅有的空间
在这种情况下
据报告,模块丢失,很难获得。然后转义需要转义的内容(直到您知道如何获取模块为止)。在这种情况下,几乎没有需要修复的地方,但该钻头可以作为普通箍的一个例子,用于复杂的管道。
带的字符串
哪里 quotemeta 引用各种各样的东西。
我们还应该保护文件名模式,因为它可能依赖于shell元字符(如
但同样,你必须检查这是否适用于每种情况。 注意 需要验证,小心地转义和引用 . 现在您的管道应该可以工作了(在我的模拟测试中是这样的)
没有一个主要的计算工具没有(很多)库就不能工作,而且每个产品安装都包含很多“额外”的东西。随着对更多库的需求的增加,它们被安装了。为什么它与Perl不同?是的,你 可以 只使用内置软件,但这可能要困难得多。
|
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |
|
|
A.Ellett · 测试-t STDIN与-t<STDIN> 1 年前 |
|
|
con · 如何跳转到foreach迭代的特定点? 1 年前 |