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. 标准webservice调用

    现代定义的webservice一般都倾向于restfull风格的http请求,但工作中还是会遇到前辈们写的时代代码. 我们更倾向于封装代码来调用,而不是服务引用.请看: Service.asmx服务的 ...

  2. Android中BitmapFactory.Options详解

    在Android中,BitmapFactory相信大家都很熟悉了,这个类里面的所有方法都是用来解码创建一个Bitmap,其中有一个重要的类是Options,此类用于解码Bitmap时的各种参数控制,那 ...

  3. access 2010

    access 2010(表4.1---4.5) 数据表视图创建表:创建----改ID一行的内容(字段----格式----数据类型----格式----字段大小)----完成. 设计视图创建表:创建--- ...

  4. Go.网络篇-2

    package main import ( "io/ioutil" "os" "io" "log" "net/ ...

  5. log4j2分层输出日志

    在java mvc框架开发过程中,我们经常的将代码分为类似controller(控制层).service(业务层).rpc(远程接口调用层).dao(数据层)等层级,如果将所有层级的日志全部都打到一个 ...

  6. Grunt插件uglify

    Gruntfile.js里面配置: module.exports = function(grunt){ // 项目配置 grunt.initConfig({ pkg: grunt.file.readJ ...

  7. 浮动的补充丶文本和字体属性丶background丶定位

    一丶浮动的补充 浮动的特性: 1. 浮动的元素脱标 2.浮动的元素互相贴靠 3.浮动的元素有"字围"效果 4.浮动的元素有收缩的效果 前提是标准文档流,margin的垂直方向会出现 ...

  8. canvas的Chart图表插件

    今天写页面页面需求到柱状图标,今天介绍一下我所用的Chart.js图表插件 官网:http://www.bootcss.com/p/chart.js/         里面会有下载js文件和中文文档 ...

  9. 纯js轮播图

    <div id="wrapper"> <div id="container"> <img src="http://ima ...

  10. 【转】C# GDAL 配置

    共生成9个dll,如下图: 1.在程序中添加*_csharp.dll四个文件的引用: 2.将剩余的五个文件复制到程序的Debug文件夹中:(如果不复制这五个文件就会出现类似“OSGeo.GDAL.Gd ...