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

1.unless控制结构

  类似于独立的else语句; 要么条件为真, 要么执行语句块内的代码;  unless(<condition>){code...;} 等价于  if(<condition>){}else{code...;}  也就是当条件为假是执行.

unless (0) {
    print "Hello"; #Hello
}

2. until控制结构

  until就是改装过的while, 区别在于它在条件为假是执行代码块.

$i = 2;$j = 10;
until($i>$j){
    $i++;
    print "Hello\n";
}

3.条件修饰词

  为了进一步简化表达, 表达式后面可以接着一个用来控制它的修饰词, 例如if修饰词可以用来模拟一个if块. print "Hello Roger" if 0; #无输出  虽然条件写在后面, 但是仍然是先执行, 实际上就是一个if控制块;  所以学习Perl的时候先把语句读完才能理解意义.

  有一些限制: 修饰词两边都只能写单个表达式, 修饰词的左边不能放多条语句, foreach只能用$_变量.

4.裸块控制结构

  包含在花括号内, 相当于一个只执行一次的伪循环,在为临时词法变量圈定有效范围时很有效. 当某个变量只会在几行代码里用到时, 可以放它们在一个裸块里, 并就近声明变量.

5.elsif子句 -- 注意不是 elseif

if(<condition>){
}elsif(<condition2>){
}elsif(<condition3>){
}else{
}

6.自增自减

  对Perl中的标量的操作,类似C语言. 也分前后, 效果和C语言一致.

7.for控制结构

  感觉很像PHP里面的for循环,哈哈!

for($i=0;$i<10;++$i){
    code...;
}#写成 for(1..10){}也能运行, 但是不是很规范

8. 3种循环控制

  => last操作

    相当于C中的break; 表示立即结束循环. 用法如:  last;

  => next操作

    相当于C中的continue; 表示立即结束当前迭代; 用法如:  next if /<pattern>/;

  => redo操作

    控制返回到本次循环的顶端, 不会经过任何条件测试, 也不会进入下一次循环.

  可以为块加标签,以便更好地控制,  但是不常见.

9.三目运算符  ?: 和逻辑操作

  和C语言中的一致.

  "定义否"操作符: // , 由于|| 操作符能提供默认值:undef, 但是没有考虑到特殊情况, 就是已定义的假值, 也可能被意外替换为默认值.

  有时需要检查一个标量, 如果没有定义则定义, 如果已经定义了就保留原值:  $last_name = $last_name{$someone} // ‘(No last name)‘;

  || 和 && 可以使用单词书写: or 和 and, 如 open MYFILE, "myfile.txt" or die "Can‘t open file myfile.txt!"; ,它们效果相同, 但是优先级要低得多, 所以可以不用写很多括号.

时间: 2024-10-11 06:06:22

Perl 学习笔记-高级控制结构的相关文章

PHP学习笔记——4.控制结构

目录: PHP学习笔记——1.变量 PHP学习笔记——2.常量 PHP学习笔记——3.运算符 PHP学习笔记——4.控制结构 PHP学习笔记——5.函数 1.顺序结构 按书写顺序从上往下执行 2.分支结构 ①单路 if ②双路 if..else ③多路 if..else if..else ④多路 switch..case switch($day) { case 1: echo '星期一'; break; case 2:echo '星期二'; break; ... default: echo '星

Perl学习笔记(一)--简介

1. 查看当前所用Perl版本号 ? 1 perl –v 2.  一个简单的Perl程序 ? 1 2 3 print "hello world"; #这是注释 执行它: ? 1 Perl helloWorld.txt 文件名后缀可以是pl可以是txt 3. 一个稍微复杂点的Perl程序 ? 1 2 3 4 5 6 @line = `perldoc -u -f atan2`; //运行一个外部命令,通过反引号来调用,将输出结果一行行依次存储在@line这个数组变量中 foreach(@l

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

PERL学习笔记---正则表达式的应用

使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^,其它非成对的分隔符也可以 不区分大小写:/i if(/yes/i) {#大小写无关 print “In that case, I recommend that you go bowling.\n”;} 匹配任何字符:/s 默认情况下,点(.)不匹配换行符,这

Go语言学习笔记(三) [控制结构、内建函数]

日期:2014年7月21日 一.控制结构 1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语句,另外Go中还提供了类型选择和多路通信转接器的select.Go的控制结构的语法和C相比有所不同,它不需要圆括号,但语句体必须总是包含在大括号内. 2.控制结构语法 1)if-else (1)if后紧跟单个条件 例如:if x > 0 {   //{必须和if在同一行,这是Go语法规定的,如果换行写,编译

Perl 学习笔记-标量数据

最近学习Perl, 准备看一遍入门指南,关键的东西还是记录下来,以便以后复习和查看参考. 笔记来自<<Perl语言入门第5版>> 1. 在Perl内部,不区分整数值和浮点数值,所有数字的内部格式都相同,采用"双精度浮点数"运算,自动转换.范围值(1e-100到 1e100) 2. 可以在一个很大的数中间插入下划线,便于阅读: 61_298_040_283_768,在取模运算时,如果其中一边或两边都是负数,则不同的Perl版本可能会有不同结果.不能计算负数的负数次方,因为会得到复数,

Newtonsoft.Json(Json.Net)学习笔记-高级使用(转)

1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 7.动态决定属性是否序列化 8.枚举值的自定义格式化问题 9.自定义类型转换 10.全局序列化设置  一.忽略某些属性 类似本问开头介绍的接口优化,实体中有些属性不需要序列化返回,可以使用该特性.首先介绍Json.Net序列化的模式:OptOut 和 OptIn OptOut 默认值,类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore OptIn 默认情况下

perl学习笔记之:模式匹配,模块,文档

Perl语言的最大特点,也是Perl作为CGI首选语言的最大特点,是它的模式匹配操作符.Perl语言的强大的文本处理能力正是通过其内嵌的对模式匹配的支持体现的.模式通过创建正则表达式实现.Perl的正则表达式与模式匹配的特点一是内嵌于语言之中,而不是通过库或函数来实现,因此使用更简便:二是比一般的正则表达式与模式匹配功能强大. 模式匹配操作符简介 操作符 意义 实例 =~ 匹配(包含) !~ 不匹配(不包含) m// 匹配 $haystack =~ m/needle/ $haystack =~

perl学习笔记(3)—— 坑

(1)用perl来ls一个目录: 写perl的时候,经常要调用到系统命令,perl有很多等价的函数可以用,但是,不小心任性了,就想用system来实现了,好吧,来个ls把,列出指定的一个目录,直接上代码 sub ls{ my ($dir) = @_; system("ls -al $dir "); } 不做参数校验了,直接ls一个目录,这个是试了一下,确实可以这样做,感觉是挺容易的,没压力.但是,你仔细想一想,这真的可行吗?仔细想一下使用场景,你会发现,这个是一个坑,据说,是惨痛的教训