perl学习(8) 控制:unless,until,next,redo,last
Perl中实现了所有C 的操作符!
Perl力求代码最少!
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学习(8) 控制:unless,until,next,redo,last的更多相关文章
- Perl入门(二)Perl的流程控制
Perl是一种粘性语言,如果你有其他语言的基础的话,你会发现他的流程控制完全和你所知的一模一样. 简单说一下他们的区别: Perl的elsif在其他语言里头可能表示为else if Perl的last ...
- Java学习--流程控制
Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...
- perl学习---控制:unless,until,next,redo,last
1.1.unless unless 的含义是:除非条件为真,否则执行块中的代码,和if正好相反 unless($fred=~ /^[A-Z_]\w*$/i){ print “The value of ...
- Perl 学习笔记-高级控制结构
1.unless控制结构 类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码; unless(<condition>){code...;} 等价于 if(<con ...
- perl学习之路1
一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...
- 04- Shell脚本学习--条件控制和循环语句
条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...
- Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)
一.思想理解 Spring 能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调.运行.S ...
- Shell脚本学习 - 流程控制和函数
继续Shell的学习.上两篇是关于基本数据类型,基本语法以及运算符相关,这一篇是流程控制相关(if, for, while) 流程控制 if else 流程控制不可为空,如果else没有语句执行,就不 ...
- ruby学习--条件控制
条件控制 本人喜欢用程序demo记录的方式来记录某方法的使用,如times方法,仅作个人学习记录 #--------------if语句(相反是unless)而while相同于until------- ...
随机推荐
- [代码搜索]OpenGrok搭建简易教程
面对着动辄几十GB且随时不断更新的大型代码,我们产生了以下需求:1.快速搜索代码2.代码存放于本地/服务器3.代码可跳转4.跨平台5.易于维护... 显然SourceInsight.ctags.gre ...
- PCB设计铜铂厚度、线宽和电流关系
以下总结了网上八种电流与线宽的关系公式,表和计算公式,虽然各不相同(大体相近),但大家可以在实际的PCB板设计中,综合考虑PCB板的大小,通过电流,选择一个合适的线宽. 一.PCB电流与线宽 PCB载 ...
- Web调试利器fiddler使用
fiddler官网:http://fiddler2.com/ http://wenku.baidu.com/view/053e79d776a20029bd642dc1 http://www.cnblo ...
- 55. 略谈Lotus Notes的与众不同及系列文章至此的总结
在二十多年的悠久历史里,Lotus Notes发展出一整套独特的概念.技术和思维.由于它早期惊人的领先时代和后续发展中同样惊人的忠于传统,这位软件领域的寿星在如今发展更新速度远超往日和技术愈趋公开互通 ...
- Treasure Exploration(二分最大匹配+floyd)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 7455 Accepted: 3 ...
- BZOJ 3668: [Noi2014]起床困难综合症( 贪心 )
之前以为xor,or,and满足结合律...然后连样例都过不了 早上上体育课的时候突然想出来了...直接处理每一位是1,0的最后结果, 然后从高位到低位贪心就可以了... 滚去吃饭了.. ------ ...
- 基于FPGA的DW8051移植(三)
总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html 基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...
- Net Core在Linux环境
Net Core在Linux环境 基础环境和相关软件准备 1.CentOS7.1 64位系统(或者其他CentOS版本的64位系统) 2.WinSCP软件(主要是方便管理和编辑Linux系统的文件) ...
- 一个RPC的demo
从下面的例子中可以看到,Consumer(client)的代码中引用了Provider部分的class,本例中是 com.provider.EchoServiceImpl和com.provider.E ...
- php启用gzip压缩
GZIP(GNU-ZIP)是一种压缩技术.经过GZIP压缩后页面大小可以变为原来的30%甚至更小.这样用户浏览的时候就会感觉很爽很愉快! 要实现GZIP压缩页面需要浏览器和服务器共同支持,实际上就是服 ...