如何将Perl one-liners转换成完整的脚本?
发布时间:2020-12-15 21:19:38 所属栏目:大数据 来源:网络整理
导读:我在网上找到很多Perl一线。有时我想将这些单行转换成一个脚本,否则我会忘记单行的语法。 例如,我使用以下命令(从nagios.com): tail -f /var/log/nagios/nagios.log | perl -pe 's/(d+)/localtime($1)/e' 我会用这样的东西来代替它: tail -f /var/log/n
我在网上找到很多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源代码的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是一个核心模块,所以没有什么可以安装。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |