我最后按照全局变量的方式来处理了。

十分感谢James和孙叔昌的帮助和建议,受益颇多。

Best regards
Zhang JiaQiang



2009/8/23 Qiang (James) <[email protected]>

> 忘记回答你的问题了, hehe. 除了用上次连接里提供的匿名函数等解决办法外(在
> 使用嵌套函数情况下),我觉得也只能使用全局变量了,这样的解决方法简单易维
> 护( 和让你过几天后再看这段程序时要用5分钟才懂的程序比要好很多 :)  )。
>
> Qiang
>
>
> >
> >> use strict;
> >> # main begin
> >> .....
> >>
> >> find( \&Wanted,$dir);
> >>
> >> sub Wanted
> >> {
> >>     if ( $_ =~ /some reg/ ){
> >>         Parser_XML($_);
> >>     }
> >> }
> >>
> >> sub Parser_XML {
> >>     my $xmlfile = shift;
> >>     my $tag_count;
> >>         $parser->setHandlers( Start => \&startElement );
> >>     $parser->parsefile($xmlfile);
> >>     print "There is $count in this xml file\n";
> >>
> >>     sub startElement {
> >>         ......
> >>         $tag_count++ if $element == 'TAG';
> >>     }
> >>
> >> }
> >>
> >>
> >>
> >> Best regards
> >> Zhang JiaQiang
> >>
> >>
> >>
> >> 2009/8/23 Qiang (James) <[email protected]
> >> <mailto:[email protected]>>
> >>
> >>     zhang jiaqiang wrote:
> >>      > 大家好,
> >>      >
> >>      > 新手想不太明白一个变量作用的问题,请帮忙看看。
> >>      >
> >>      > 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且
> >>     第三次循
> >>      > 环的时候这个值怎么成2了?
> >>
> >>     简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。
> >>
> >>
> >>
> http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines
> >>
> >>
> >>     另外,没有特别需要,没有人会这么写 Perl 程序。
> >>
> >>     Qiang
> >>
> >>
> >>      >
> >>      > 简化的程序如下:
> >>      >
> >>      > for $i (0..2){
> >>      >     a();
> >>      > }
> >>      > sub a
> >>      > {
> >>      >     my $x ;
> >>      >     in_a();
> >>      >     print $i,":\t",$x,"\n";
> >>      >     undef $x;
> >>      >     sub in_a
> >>      >     {
> >>      >       $x++;
> >>      >       print "in_a:$x\n";
> >>      >     }
> >>      > }
> >>      >
> >>      > 执行结果:
> >>      > in_a:1
> >>      > 0:      1
> >>      > in_a:1
> >>      > 1:
> >>      > in_a:2
> >>      > 2:
> >>      >
> >>      >
> >>      >
> >>      > Best regards
> >>      > Zhang JiaQiang
> >>      >
> >>      >
> >>      > >
> >>
> >>
> >>
> >>
> >>
> >> >>
> >
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复