I am LAZY bones ? all linux

a2p──将awk程序转成perl

呵呵,不管你觉得有没有必要,反正,就是有这样的工具了,而且还是perl包自带的哦(看来perl确实有点怪异,哈哈)。
别的不说了,拿个小程序演示下,下面的awk程序是用来统计当前登录系统的人数的,其实就是 who | wc -l

BEGIN { 
while ( "who" | getline ) n++ 
print n 
}

然后这样:

lily@LLY:~/test/awk$ awk -f count.awk
3
lily@LLY:~/test/awk$ a2p count.awk > count.pl 
lily@LLY:~/test/awk$ perl count.pl
3

哈哈,确实能执行哦,再让我们来看看转出来的perl程序,格式都还蛮工整的呢:

#!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
    if $running_under_some_shell;
			# this emulates #! processing on NIH machines.
			# (remove #! line above if indigestible)
 
eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift;
			# process any FOO=bar switches
 
open(WHO_FH, 'who|') || die 'Cannot pipe from "who".';
 
$, = ' ';		# set output field separator
$\ = "\n";		# set output record separator
 
while (($_ = &Getline2('WHO_FH', '|'),$getline_ok)) {
    $n++;
}
print $n;
 
sub Getline2 {
    ($fh) = @_;
    if ($getline_ok = (($_ = <$fh>) ne '')) {
	;
    }
    $_;
}

想学perl的同学可以折腾折腾。

最后修改时间: 2010年02月12日 14:31

本文章发表于: 2010年02月12日 14:31 | 所属分类:CLI软件. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

2 个评论 关于: “a2p──将awk程序转成perl”

  1. chi 在 2010年02月14日 19:06 说:回复

    如果有l2p (lua to perl) 就好了……

  2. xiooli 在 2010年02月25日 09:18 说:回复

    浪费资源哦

发表评论