codecamp

构造

C 风格的循环通常不必要

你可以写 C 风格的循环,但常常不需要它们。

不要在 foreach 的位置使用它们:

for (my $i = 0; $i <= $#foo; $i++) { # BAD

foreach (@foo) { # BETTER

不要在 while 的位置使用它们:

for (my $i = <STDIN>; $i; $i = <STDIN>) { # BAD

while (my $i = <STDIN>) { # BETTER

想想你编写的代码,并找找感觉。

匿名哈希和数组

创建一个匿名数组引用,并给它赋值:

my $array = [ 'one', 'two', 'three' ];

匿名是因为我们不必创建数组。

哈希有相似的构造器:

my $hash = { one => 1, two => 2, three => 3 };

看作你应认为的而非引用。

q[qrwx]?//m//s/// 及 y///

Perl 让你自行指定定界符:

  • 单引号:'text' => q/text/
  • 双引号:"text" => qq/text/
  • 正则表达式:qr/text/。除此之外,在 Perl 匹配及替换操作符外没有别的方式指定正则表达式匹配。
  • 单词:("text", "text") => qw(text text);
  • 反引号:`text` => qx/text/
  • 正则匹配(m//)、正则替换(s///)、及转换(tr///y///) 工作方式相同

你可以使用除空白之外的任意字符。但要注意平衡括号或花括号:

qq//
qq#A decent <html> delimiter </html> #
qq( man perl(1) for details ) # valid!

globallocalmy 及 our

  • 使用 use vars 声明全局变量
  • 使用 my 声明词法变量
  • local 并非你所认为的,除非你知道为何使用 local,否则使用 my 代替
  • 仅当你的包需要全局变量时使用 our
CPAN
引用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }