这是一个闭包程序,Programming Perl里有讲解的。
//angel -----Original Message----- From: qingshui <[email protected]> To: PerlChina Mongers 讨论组 <[email protected]> Sent: Wed, Sep 30, 2009 3:19 am Subject: [PerlChina] 有个程序不是很理解,请大家给我指点一下 #!/usr/bin/perl sub errorMsg{ my $lvl=shift; # define the subroutine to run when called. return sub{ my $msg=shift; #define the error type now. print "Err Lever $lvl:$msg\n"}; #print later. } $severe=errorMsg("Severe"); $fatal=errorMsg("Fatal"); $annoy=errorMsg(Annoying); &$severe("Divide by zero"); &$fatal("Did you forget to use a semi-colon?"); &$annoy("Uninitialized variable in use"); 这个程序是在我看关于子程序的引用的时候,看到的,我看了以后,有两个问题: 1. 有没有return sub 这样的语句啊,应该怎么理解? 2.子程序下定义的变量$lvl=shift,我不是很理解,而且return sub后面中又有 my $msg=shift;这个我也不懂 请大家 帮我理解一下,多谢! --~--~---------~--~----~------------~-------~--~----~ 您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。 要在此论坛发帖,请发电子邮件到 [email protected] 要退订此论坛,请发邮件至 [email protected] 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛 -~----------~----~----~----~------~----~------~--~---
