2010年 02月 12日 的归档
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的同学可以折腾折腾。