1.1.unless

unless 的含义是:除非条件为真,否则执行块中的代码,和if正好相反

unless($fred=~ /^[A-Z_]\w*$/i){

print “The value of \$fred doesn’t looklike a Perl identifier name.\n”;

}

else

{

print “match success\n”;

}

# 大写字母或者下划线开头的字符串

1.2.until

将 while 循环的条件部分取反

until($j> $i){

$j *=2;

}

1.3.表达式修饰符

print“$n is a negative number.\n”if $n<0;

&error(“Invalidinput”) unless &valid($input);

$i *=2 unitl $i > $j;

print“”, ($n += 2) while $n <10;

&greet($_)foreach @person;

Perler 一般都喜欢少输入些字符。简写的形式读起来很像英文:输出这段消息,如果 $n 小于 0 。

条件表达式虽然被放在后面,也是先被求值

1.4.for

for($i=1; $i <=10; $i++){ # 从1到10

print “I can count to $i;\n”;

}

对于Perl 解析器(parser)而言,关键字 foreach 和 for 是等价的。 
for(1..10){ # 实际上是 foreach 循环 , 从1到10

print “I can count to $_!\n”;

}

1.5.last

last 会立刻结束循环。(这同C 语言或其它语言中的“ break ”语句类似)。

# 输出所有出现 fred 的行,直到遇见 _ _END_ _ 标记

while(<STDIN>){

if(/_ _ END_ _/){

# 这个标记之后不会有其它输入了

last;

}elsif(/fred/){

print;

}

}

##last 跳转到这里 ##

Perl 的5 种循环体分别是 for , foreach , while , until ,以及“裸”块{}, last 对整个循环块其作用。

#! /usr/bin/perl -w

use strict;

use warnings ;

{

print "test1\n";

last;

print "test2";

}

1.6.next

next 之后,又会进入下一轮循环(这和C 或者类似语言的“ continue ”相似)

1.7.redo

循环控制的第三个操作是 redo 。它会调到当前循环块的顶端,不进行条件表达式判断以及接着本次循环。(在C 或类似语言中没有这种操作。)

#!/usr/bin/perl -w

use strict ;

use warnings;

#输入测试

my @words = qw{ fredbarney pebbles dinoWilma betty };

my $errors = 0;

​foreach(@words)

{    ##redo 跳到这里##

print "Type the word $_: ";

chomp(my $try = <STDIN>);

if($try ne $_){

print "sorry ?That’s not right.\n\n";

$errors++;

redo; #跳转到循环顶端

 }
}
print "You’ve completed the test, with $errorserror\n";

1.8.标签块

Larry 推荐标签均大写。这会防止标签和其它标识符冲突,同时也使之在代码中更突出。同时,标签很少使用,通常只在很少一部分程序中出现。

这个和c是同样的,为了保证逻辑和维护的简明,尽量不适用goto

goto

1.9.逻辑操作符

逻辑与 AND ( && )

逻辑或 OR ( || )

逻辑或||有另外的含义,perl里面成为:短路操作

my$last_name = $last_name{$someone} ||‘(No last name)’

即在 %last_name 中不存在 $someone 时, $last_name = ‘(No last name)’

逻辑操作符还能用来控制结构

($m< $n) && ($m = $n);

($m> 10) || print“why it it not greater?\n”

1.10.    三元操作符

my$location = &is_weekend($day) ? “home”: “work”;

perl学习---控制:unless,until,next,redo,last的更多相关文章

  1. perl学习(8) 控制:unless,until,next,redo,last

    Perl中实现了所有C 的操作符! Perl力求代码最少! 1.1.unless unless的含义是:除非条件为真,否则执行块中的代码,和if正好相反 unless($fred=~ /^[A-Z_] ...

  2. Perl 学习笔记-高级控制结构

    1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<con ...

  3. perl学习之路1

    一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...

  4. Perl 学习笔记-标量数据

    最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值, ...

  5. perl学习 之:my local our

    范围声明 和全局声明类似,词法范围声明也是在编译时起作用的.和全局声明不同的是,词法范围声明的作用范围是从声明开始到闭合范围的最里层(块,文件,或者 eval--以先到者为准).这也是为什么我们称它为 ...

  6. perl学习之内置变量

    Perl内置特殊变量   一.正则表达式特殊变量:1.$n  :包含上次模式匹配的第n个子串2.$& :前一次成功模式匹配的字符串3.$`  :前次匹配成功的子串之前的内容4.$’ :前次匹配 ...

  7. PERL学习之模式匹配

    一.简介   模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def.其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line); ...

  8. perl学习之六:变量作用域

    变量作用域 (一)包变量 $x = 1 这里,$x是个包变量.关于包变量,有2件重要的事情要了解: 1)假如没有其他申明,变量就是包变量:2)包变量总是全局的. 全局意味着包变量在每个程序里总可访问到 ...

  9. Perl学习之四:语句(续)

    循环控制:1.last 退出标签的语句块2.next 3.redo不推荐,循环次数不可控 4.goto不推荐.***************************************标签: 先 ...

随机推荐

  1. jmeter(3)——录制

    其实自己之前做web功能自动化就接触过录制,不管是火狐浏览器的插件录制,还是QTP的录制,可能刚开始接触你会觉得录制很low,不过,时间长了,有时候录制也是很考验人的,更何况,不管是录制还是脚本,只要 ...

  2. vue(2.0)+vue-router(2.0)+vuex(2.0)实战

    好久没更新自己的知识库,刚好借双十一的契机,用上了vue(2.0)+vue-router(2.0)+vuex(2.0)来开发公司的双十一电商活动. 项目目录结构: 运行: npm install np ...

  3. Javascript的构造函数和constructor属性

    原型链 function Foo() { this.value = 42;}Foo.prototype = { method: function() {}}; function Bar() {} // ...

  4. sb追加网页(在追加中添加C#代码)

     “+代码+”

  5. [android] 切换界面的问题

    1. 界面重复创建的问题 2. 中间容器每次切换,都会清空容器中的子对象问题 3. 点击返回键的处理 解决重复创建的问题: 传递Class字节码对象,利用泛型来规定对象 判断界面是否存在,如果存在重复 ...

  6. 关于eclipse的编码注释等Code Template设置

    啥也不说直接放东西: 首先进入eclipse的preferences里的java 点击Insert variable可以自己设置需要的 1. 设置Files:点击edit, /** * <p&g ...

  7. JBPM学习第2篇:为Eclipse添加JBPM开发支持

    1.Eclipse添加JBoss支持插件 参考:Eclipse添加JBoss支持 若已安装,直接跳过! 2.Eclipse添加Drools插件 jbpm-installer-full解压后的文件夹中找 ...

  8. animate默认时长所带来的问题及解决

    一.需求描述 做一个进度条长度逐渐减少的动画,当进度条长度小于等于0时,关闭动画,并弹出透明底板显示新提示. 二.问题描述 初始代码如下: //设置进度条初始长度 var progressLength ...

  9. 模块与包&常用模块

    一.模块的使用 模块定义:一系列功能的集合体 分为三大类:1.自定义模块 2.内置模块(比如 time,os,sys) 3.第三方模块 模块的表现形式: 1.使用python编写的py文件 2.已被编 ...

  10. SPOJ QTREE7

    题意 一棵树,每个点初始有个点权和颜色 \(0 \ u\) :询问所有\(u,v\) 路径上的最大点权,要满足\(u,v\) 路径上所有点的颜色都相同 $1  u \(:反转\)u$ 的颜色 \(2 ...