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. Go在windows10 64位上安装

    一.安装 1.下载安装包http://www.golangtc.com/download,这是国内的地址,也直接去官网下载. 2.选择适合自己的版本,这里我选择安64位装版go1.9.2.window ...

  2. wcf 基本配置

    <system.serviceModel> <services> <service name="ServiceUpdater.ServiceUpdate&quo ...

  3. 05.部分类 partial

    namespace _06.部分类 { class Program { static void Main(string[] args) { } } /// <summary> /// 这个 ...

  4. 会话技术Cookie

    1.会话技术 1>什么是会话技术: 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话. 2>作用: 会话技术就是记录这次会话中客户端的状态与数据的. Cookie:数 ...

  5. java_对象序列化、反序列化

    1.概念 序列化:将对象转化为字节序列的过程 反序列化:将字节序列转化为对象的过程 用途: A:将对象转化为字节序列保存在硬盘上,如文件中,如文本中的例子就是将person对象序列化成字节序列,存在p ...

  6. 读EntityFramework.DynamicFilters源码_心得_示例演示02

    上次对EntityFramework.DynamicFilters整体的项目结构有了一个认识,这次我们就通过阅读说明文档,示例项目,和单元测试,来动手构建一个我们的体验项目,通过对动态过滤器的使用,使 ...

  7. hdu 1011 树形背包

    http://blog.csdn.net/libin56842/article/details/9876503 这道题和poj 1155的区别是: poj1155是边的价值,所以从边的关系入手 hdu ...

  8. UVA 10328(DP,大数,至少连续)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19825 这道题和http://www.cnblogs.com/qlky/p/ ...

  9. 01HTMl-<base>标签

    一.base用于定义页面链接的打开方式 <base target="_blank"/> 定义页面链接默认打开方式,base通过target属性告诉浏览器如何打开页面. ...

  10. cnpm 安装

    国内npm 安装比较慢,可选择cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org