小程序中的两个疑惑点,谢谢您的帮助!

小程序中的两个疑惑点,谢谢您的帮助!

程序如下:

print "Please enter a string: ";
    chomp(my $string = <STDIN>);
    print "Please enter a substring: ";
    chomp(my $sub = <STDIN>);
    my @places;
    { my $pos = -1;
      while (1) {
      $pos = index($string, $sub, $pos + 1);  # find next position
      last if $pos == -1;
      push @places, $pos;
      }
    }
    print "Locations of '$sub' in '$string' were: @places\n";

问题1:"last if $pos == -1;"一句中,为何用"="不行?
问题2:"push @places, $pos;"一句中,意思是将$pos的值放到数组@places中,但是始终没有定义@places是什么内容.此处的@places是空么?我最初的理解是:不用@places这个数组,最后直接打印$pos,但是测试了行不通.
哪个老大能帮我分析并详细讲解下啊?小弟感激不尽!
问题1,这里是个判断句,不是赋值句。如果$pos==-1则,while循环结束。
问题2,如果前面声明过,则@places为(),如果没有声明过,应该是undef。直接打印的话,$pos是一个局部变量,所以在外部print等于一个undef。
个人看法,仅供参考。
找本书仔细读读吧
谢谢大家的指导,小弟明白了.
偶正在看<perl入门第4版>,看第14章"进程管理"了.感觉该书讲的不细致,很多小细节没有涉及到啊.看完了换本看看,呵呵!
你都看到14章了。你这个问题里都是前几章就有的答案。看书不仔细啊。