Perl中的控制结构学习笔记

2019-10-01 10:36:41王旭

7、传统的goto label;语句。

三、单行条件 
  语法为statement keyword condexpr。其中keyword可为if、unless、while或until,如:
 
    print ("This is zero.n") if ($var == 0);
    print ("This is zero.n") unless ($var != 0);
    print ("Not zero yet.n") while ($var-- > 0);
    print ("Not zero yet.n") until ($var-- == 0);

  虽然条件判断写在后面,但却是先执行的。

指令: unless 假如非
unless的含义就是说“如果判别式不为真,就执行...”。
语法一:

unless(判别运算式) {
判别式为假时语句块;
}

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

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

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

unless(判别运算式)
{
判别式为假时语句块;
}else{
判别式为真时语句块;
}

范例:

print"请输入您的分数?n";
$scorre=;
chop($score);
unless($score<60)
{
print"您的分数及格了!n";
}else{
print"您的分数不及格!n";
}

进阶技巧:&&,||及?:作为控制结构
它们看上去像标点符号,或是表达式的一部分。但在Perl中可作为控制结构。
比如说:

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

也可以写为:

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

但更简单的方式是:

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

为什么呢?&&为逻辑与操作符,其含义为:
  若判别式为真,则表达式的值依赖于后面语句块的值。所以为真时的语句块被执行(用来求值)。
  若判别式为假,则整个表达式为假,不用考虑后面语句块的值。所以为假时的语句块不被执行。
同样道理,unless(this){that}可替换为this||that。
?:表达式举例:exp1?exp2:exp3表示:如果exp1为真则求exp2的值,否则求exp3的值。