首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 网络编程 > CGI > 正文
  • CGI编程--Perl中的控制结构(一)
      2007-2-25  来源:网络资源  编辑:Jsbulo  热度:

      先来看看Perl中的循环结构吧。

      1:while结构

      while结构在perl中有三种形式。 第一种形式是这样的:

       #!/user/bin/perl -w
       use strict;
       {
       my $a=0;
       while(3>$a)
         {
          print $a++;
          print "\n";
         }
       }

      第二种是定语后置式。呵呵,英文好的觉得很正常了。

       #!/user/bin/perl -w
       use strict;
       {
       my $a=0;
       print $a++."\n" while(3>$a);
       }

      第三种是这个样子的,很古怪,真的很古怪。这种用法就是加上一个continue:

       #!/user/bin/perl -w
       use strict;
       {
       my $a=0;
       while(3>$a)
         {
          print "$a\n";
         }
       continue
         {
          if($a++>1) print "hello\n";
         }
       }

      这种结构会在每个while运行了一圈之后运行一遍continue的部分,然后继续进行while循环。

      2:for结构

      for结构是各种语言中都有的。perl中的for结构和c语言中的非常相近。下面是一个例子。

       #!/user/bin/perl -w
       use strict;
       {
       my $a;
       for($a=0;$a<10;$a++)
         {
          print "$a\n";
         }
       }

      对于数组我们可以这样访问。

       #!/user/bin/perl -w
       use strict;
       {
       my @a=(1..10);
       my $counter;
       for($counter=0;$counter<@a;$counter++)
         {
          print "$a[$counter]\n";
         }
       }

      这里面出现了一句$counter<@a,记住,数组在标量情况下即@a返回的是数组的长度,这样就好懂了,是不是?

      3:foreach控制结构

      foreach控制结构很好玩的,在bsh和javascript中有一种for(in)循环和foreach很相象。其他的语言我不熟悉,不知道有没有相近的。foreach的用法可以从下面的例子得知:

       #!/user/bin/perl -w
       use strict;
       {
       my @a=(1..10);
       my $counter;
       foreach $counter (@a)
         {
          print "$counter\n";
         }
       }

      这个程序将会把@a数组中所有的元素先逐个引用给$counter,然后把$counter地值打印出来。注意,我这里说得是引用,不是赋值,perl里面的“=”实际上是在进行引用,而不是赋值,这是需要同c严格区分的。下面的例子更加好玩一点,看一看:

       #!/user/bin/perl -w
       use strict;
       {
       my @a=(1..10);
       my $counter;
       foreach $counter (@a)
         {
          $counter++;
         }
       print "@a\n";
       }

      猜一猜将会打印出什么?呵呵,是234567891011。因为,$counter是@a中每个元素的引用,所以$counter++就对@a中每个元素进行了++操作。foreach用在hash中是非常爽的。

       #!/user/bin/perl -w
       use strict;
       {
       my %a=(hello,"你好",great,"太棒了");
       my $thiskey;
       foreach $thiskey (keys %a)
         {
          print "$thiskey=>$a($thiskey)\n";
         }
       }

      将可以把hash中所有的key和value打印出来。呵呵,很好玩吧?