杂项

  • 核心模块Data::Dumper可以被用于输出任意scalar到屏幕上,这是非常有用的调试工具。

  • 还有另一种语法qw{ }可以用来声明array,常常在use语句用到它:

    1. use Account qw{create open close suspend delete};

    许多引号一样的运算符

  • =~ m//=~ s///运算符中,你可以用花括号代替斜杠作为正则表达式的分隔符,当你的正则表达式中包含很多斜杠时候就很有用了,要不然你就得使用很多反斜杠来进行跳脱。例如,=~ m{///}将匹配三个斜杠而=~ s{^https?://}{}会移除URL的协议部分。

  • Perl没有CONSTANTS。现在不鼓励使用它们,不过以前不一定。常量实际上就是省略括号的子程序调用。

  • 有时候人们省略hash键两旁的引号,写成$hash{key}而非$hash{"key"}。 当这个孤零零的key恰好表示字符串"key"而不是子程序调用key()的时候,它们才能侥幸成功。

  • 如果你看到一块由两个左尖括号作为分隔符包围起来的没有格式化的代码,就像[<<EOF](http://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators),可以通过在Google中搜索“here-doc”找到它的解释。(译者注:这是再一次吐槽因为Perl滥用符号导致难以搜索。)

  • 警告!许多内置函数调用时都可以不给参数,那样它们就会使用$_代替,希望这可以帮助你理解下面这种写法:

    1. print foreach @array;

    还有

    1. foreach ( @array ) {
    2. next unless defined;
    3. }

    我不喜欢这种写法,因为在代码重构时将会遇到麻烦。

两个半小时这就到了。