12.8. Perl 短脚本的疯狂
虽然任何 AWK 脚本都可以通过 a2p(1) 转换成 Perl,但单行的 AWK 脚本最好还是手动转换为单行的 Perl 脚本。
让我们来看看下面这个 AWK 脚本片段。
awk '($2=="1957") { print $3 }' |
这等价于下列的任意一行。
perl -ne '@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}' |
perl -ne 'if ((@f=split)[1] eq "1957") { print "$f[2]\n"}' |
perl -ne '@f=split; print $f[2] if ( $f[1]==1957 )' |
perl -lane 'print $F[2] if $F[1] eq "1957"' |
perl -lane 'print$F[2]if$F[1]eq+1957' |
最后一个简直就是个迷。它用上了下面列出的这些 Perl 的特性。
空格为可选项。
存在从数字到字符串的自动转换。
更多的命令行选项参见 perlrun(1)。想要更疯狂的 Perl 脚本,可以使用 Perl Golf。