加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将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是一个核心模块,所以没有什么可以安装。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读