您的位置:寻梦网首页编程乐园Perl 编程Perl初级教程
Perl初级教程
perl控制结构(1)-判断控制

    选择性控制结构包括if和unless语句,类似于C语言中的if。

  首先介绍一下真和假的定义。在Perl中,这些规则有些难以理解。控制表达式的值为空串或0时,则表达式为假, 对于其它任何情况,表达式的值都为真。

  注意:"00"不是空串或0,值为真。"0.0"也是如此。

  指令: if 假如

  语法一:

  if(判别运算式)
  {

  表达式为真时的语句块;
  }

  上个语法在Perl中也可以写成:

  表达式为真时的语句块 if (判别运算式);

  范例:

  print"请输入您的分数?n";
  $scorre=<STDIN>; #<STDIN>代表标准输入,会让使用者输入一字符串
  chop($score); #将$score最后一个换行字符n删除掉
  if($score>=60){

  print"您的分数及格了!n";

  }

  也可以写成: print "您的分数及格了!n" if ($score>=60);

  语法二:

  if(判别运算式一){

  判别式一为真时的语句块;

  }else{

  判别式一为假时的语句块;

  }

  范例:

  print"请输入您的分数?n";
  $scorre=<STDIN>;
  chop($score);
  if($score>=60)
  {

  print"您的分数及格了!n";

  }else{

  print"您的分数不及格!n";

  }

  语法三:

  if (判别运算式一)
  {

  判别式一为真时的语句块;

  }elsif(判别运算式二){

  判别式二为真时的语句块;

  }elsif(判别运算式三){

  判别式三为真时的语句块;

  }else{

  所有判别式为假时的语句块;

  }

  范例:

  print"请输入您的分数?n";
  $scorre=<STDIN>;
  chop($score);
  if($score>60)
  {

  print"您的分数大于60分!n";

  }elsif ($score<60){

  print"您的分数小于60分!n":
 
  }else{

  print"您的分数刚好是60分!n";

  }

  指令: unless 假如非

  unless的含义就是说“如果判别式不为真,就执行...”。

  语法一:

  unless(判别运算式) {

  判别式为假时语句块;

  }

  上个语法在Perl中也可以写成:判别式为假时语句块 unless (判别运算式);

  范例:

  print"请输入您的分数?n";
  $scorre=<STDIN>; #<STDIN>代表标准输入,会让使用者输入一字符串
  chop($score); #将$score最后一个换行字符n删除掉
  unless($score<60)
  {

  print"您的分数及格了!n";

  }

  也可以写成: print"您的分数及格了!n"unless($score<60);

  语法二:

  unless(判别运算式)
  {

  判别式为假时语句块;

  }else{

  判别式为真时语句块;

  }

  范例:

  print"请输入您的分数?n";
  $scorre=<STDIN>;
  chop($score);
  unless($score<60)
  {

  print"您的分数及格了!n";

  }else{

  print"您的分数不及格!n";

  }

  进阶技巧:&&,||及?:作为控制结构

  它们看上去像标点符号,或是表达式的一部分。但在Perl中可作为控制结构。

  比如说:

   if (判别表达式)
  {为真时语句块};

  也可以写为:

   为真时的语句块 if (判别表达式)


  但更简单的方式是:

 判别式 && 为真时的语句块


  为什么呢?&&为逻辑与操作符,其含义为:
  若判别式为真,则表达式的值依赖于后面语句块的值。所以为真时的语句块被执行(用来求值)。
  若判别式为假,则整个表达式为假,不用考虑后面语句块的值。所以为假时的语句块不被执行。


  同样道理,unless(this){that}可替换为this||that。

  ?:表达式举例:exp1?exp2:exp3表示:如果exp1为真则求exp2的值,否则求exp3的值。

上一篇 目录 下一篇