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. 次讲解js中的回收机制是怎么一回事。

    在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...

  2. MvvmLight - ViewModelLocator

    这里先鼓舞下士气,ViewModelLocator很简单,甚至可以去掉,它不是Mvvm必须的.在初学Mvvm时,一般都是使用NuGet安装 MvvmLight框架,总是会带上那么一个ViewModel ...

  3. vue 使用Slot 分发内容 学习总结。

    https://cn.vuejs.org/v2/guide/components.html#使用-Slot-分发内容    官方API地址 我对solt的理解是当组件中某一项需要单独定义,那么就应该使 ...

  4. JavaScript对象中的constructor属性

    constructor属性始终指向创建当前对象的构造函数. 比如下面的例子: // 等价于 var foo = new Array(1, 56, 34, 12); var arr = [1, 56, ...

  5. 【转】XDocument简单入门

    1.什么是XML? 2.XDocument和XmlDocument的区别? 3.XDocument 4.XmlDocument 5.LINQ to XML 6.XML序列化与反序列化 因为这几天用到了 ...

  6. package.json中^符号和~符号前缀的区别

          开发中经常会使用npm install 安装依赖包,经常会看到^符号和~符号,现将二者的区别总结如下:     版本号 x.y.z : z :表示一些小的bugfix, 更改z的号, y ...

  7. 在 Web 应用中创建 Node.js 应用程序

    本分步指南将通过 Azure Web 应用帮助您启动并运行示例 Node.JS 应用程序.除 Node.JS 外,Azure Web 应用还支持其他语言,如 PHP..NET.Node.JS.Pyth ...

  8. POJ 2955 Brackets 区间DP 最大括号匹配

    http://blog.csdn.net/libin56842/article/details/9673239 http://www.cnblogs.com/ACMan/archive/2012/08 ...

  9. php浮点数加减乘除bug

    项目测试阶段,少部分微信支付成功,但是在异步通知校对订单金额是否一致时,一直被认定订单金额不一致. 类似于: 浏览器输出: 分析: 因为计算机二进制无法准确表示部分浮点数(如2.03.0.58等等), ...

  10. Scrapy框架的使用 -- 自动跳转链接并请求

    # -*- coding: utf-8 -*- import scrapy from movie.items import MovieItem class MoviespiderSpider(scra ...