我在网上找到很多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
解决方法
@H_404_15@ 您可以通过传递生成Perl源代码的B :: Deparse编译器后端将任何Perl一行转换为完整脚本:perl -MO=Deparse -pe 's/(\d+)/localtime($1)/e'
输出:
LINE: while (defined($_ = <ARGV>)) { s/(\d+)/localtime($1);/e; } continue { print $_; }
手动解码命令行标志的这种方法的优点是,这正是Perl解释您的脚本的方式,所以没有猜测。 B :: Deparse是一个核心模块,所以没有什么可以安装。