我在网上找到了很多 Perl 的俏皮话。有时我想将这些单行代码转换成脚本,否则我会忘记单行代码的语法。
例如,我使用以下命令(来自 nagios.com ):
tail -f /var/log/nagios/nagios.log | perl -pe 's/(\d+)/localtime($1)/e'
我想用这样的东西替换它:
tail -f /var/log/nagios/nagios.log | ~/bin/nagiostime.pl
但是,我无法找出快速将这些东西放入脚本中的最佳方法。有谁能快速将这些俏皮话放入 Bash 或 Perl 脚本中吗?
最佳答案
您可以通过将任何 Perl 单行代码传递给生成 Perl 源代码的 B::Deparse
编译器后端,将其转换为完整脚本:
perl -MO=Deparse -pe 's/(\d+)/localtime($1)/e'
输出:
LINE: while (defined($_ = <ARGV>)) {
s/(\d+)/localtime($1);/e;
}
continue {
print $_;
}
与手动解码命令行标志相比,这种方法的优点在于,这正是 Perl 解释脚本的方式,因此无需猜测。 B::Deparse
是核心模块,因此无需安装任何内容。
关于perl - 如何将 Perl 的单行代码转换为完整的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822525/