Chen Yangjian's Blog

Carpe diem - Seize the day

Using Hash Instead of Switch in Perl

| Comments

在之前的《诡异的Perl》一文中, 我表示我被 Perl 木有 switch 震惊了。昨天写脚本的时候,老大说, 最好将生成的 SQL 按照 schema 的名字输出到对应的文件里头去,习惯性的想用 switch 或者 if else (Perl 里头跟 PHP 差不多,也有个 elseif,不过写作 elsif,这两个都很装逼吧?)。 后来脑子终于灵光了一下,改成了下面这个:

my %out;
while (<>) {
    open $out{$schema}, ">$schema.sql" if ($out{$schema} == undef);
    print { $out{$schema} } "commit;\n";
}

多省事呀…… print 的第一个参数如果不加大括号的话,不会被认作文件句柄。

最后,写个八卦,当时群众对 elsif 意见很大,纷纷走上街头,骆驼教教主 Larry Wall 同学一开口,大家都没声响了:“不喜欢?那你可以做以下两件事: 1) 发明一个语言;2) 让大家都用它。”

Comments