Perl中的控制结构学习笔记

 更新时间:2020年6月29日 13:42  点击:1747

一、语句的种类

计算机是一种工具,优势在于执行重复任务.循环执行,循环语句。
需要作出大量的判断,按条件执行,条件语句。
顺序语句。
表达式真假值总结
表达式不一定是逻辑表达式,但一定要得出真假值。
假值:
逻辑值为假
值为0
字符串为空
列表为空
undef
其它情况为真值

二、条件语句if

形式

复制代码 代码如下:

if(表达式){         空格忽略,断行可以不同
                    if(表达式)
语句}               {
elsif(表达式){       语句
                     }
  语句}
….
else{
   语句
}

说明:

(1) elsif和else部分可以省略.
(2) 注意elsif关键字.
(3) 语句块{}必须有,但可以为空
(4) 可以嵌套.
(5) 含义:为真时执行,表达式为执行条件.

三、条件语句unless

复制代码 代码如下:

unless(表达式){语句}

与if条件含义相反,执行语句除非表达式为真,为真时退出,表达式为退出条件.

四、循环语句while

复制代码 代码如下:

while(表达式){语句}

(1) 表达式为真时执行,是执行的条件.
(2) 必须设置条件有为假的可能,否则无法退出,无限制循环.
do{语句}while(表达式)
至少执行一次,先执行一次再判断。

五、循环语句until

复制代码 代码如下:

until(表达式){语句}

(1) 与while相反,执行语句,直到表达式为真停止.
(2) 为真时停止,表达式为退出条件.
复制代码 代码如下:

do{语句}until表达式)

至少先执行一次语句,再进行条件判断.

六、for循环

for(表达式1;表达式2;表达式3){语句}
(1) 表达式1:初始化控制变量或其它变量,只在第一次循环时执行,可以由
    逗号分隔给多个变量赋值.
(2) 表达式2:每次循环时比较,为真时循环.
(3) 表达式3:每次执行完循环后才执行,改变控制变量的值,一般为自增.
(4) 三个表达式都可以省略,但两个;必须保留.for(;;)
(5) 第一,三表达式都可以使用,执行多个语句。

例如:for($line=<>,$count=1;$count<10;$line=<>,$count++){print $line;}

七、foreach语句

foreach $w(列表或数组){语句}
(1) ()内为数组@a,或列表(1,2,3)
(2) $w可以是新变量,也可以是已使用的变量,在循环结束后变量值恢复.
(3) 每次循环把列表或数组中的值依次赋于$w,直到列表为空,可以不必关心数组长度.
(4) 若在循环体中修改$w的值,则相应的数据元素值也改变.
(5) 当列表中是常量时,$w的值不能修改.
(6) $w和@a可以相同,如$a(@a)
(7) for和foreach可以互换,通用.

foreach的形式
(1) foreach $a(@a){} 一般形式.
(2) foreach $a(1,2,3,4){} 列表
(3) foreach $k(keys%h){} 散列形式
(4) foreach $a(@a[1,2,3]){} 只对数组的部分元素
(5) foreach (@a){} 省略循环变量,缺省为$_
    $_缺省变量,print为打印$_变量.
(6) grep,map函数相当于foreach对每个元素进行操作.

八、循环控制

 last:退出循环
 next:执行下一循环,循环中next下的语句本次不执行,对于for要执行变量自增.
 redo:重新执行本次循环,对于for不执行变量自增,在do语句中无效,不建议使用.
 goto:跳转,不能跳转到循环或子程序内,现在结构化编程都不建议使用.

九、标记

标记只能由字母和下划线组成,一般为大写,由:分隔。
标记定义:定义在循环语句前或语句前(goto)
一般用到嵌套循环的内层跳到最外层时,其中last是退出最外层循环,程序继续向下走,
不是跳转到最外层再执行.

例子:

复制代码 代码如下:

#!/usr/bin/perl
print “使用标签:”;
LABEL:for($i=1;$i<5;$i++){
        for($j=1;$j<5;$j++){
             print “$j”;
             last LABEL if $i==3;
         }
        }
print “\$i=$i”;

十、continue语句块

continue{语句}

(1) 紧跟在循环语句后,在循环体执行完,下一次条件判断之前执行.
(2) 也可用于由{}标识的语句块之后.
(3) 从last跳出后不执行,但next执行.

十一、单行条件语句与循环语句

条件语句:语句在前,条件在后.print $a if $a==0;但是先测试条件再执行语句.
同理:

复制代码 代码如下:

unless: print $a unless($a==0);
while: print $a while($a–==0);

注意:循环语句不要丢失控制变量,造成死循环.
用||,&&的条件语句:$a==0&&print $a;
                  open(F,'file')||die “can't open”;
die函数:在控制台标准错误输出信息后退出程序.
warn:输出信息后不退出程序,只起警报作用.
$!:内部变量包含错误代码.
$@:内部变量包含错误信息.

十二、小结

1.条件语句:

复制代码 代码如下:

if (表达式){语句}
  elsif(表达式){语句}
  ….
  else{语句}

2.单行语句 if(表达式);

3.|| or && and 形式

4.?:形式

5.unless(表达式){语句}
  单行语句 unless(表达式);

6.while until循环

 while(表达式){语句}
 do{语句}while(表达式)
 while(表达式){语句}continue{语句}
 单行语句 while(表达式)
 until(表达式){语句}
 do{语句}until(表达式)
 until(表达式){语句}continue{语句}
 单行语句 until(表达式)

7.for foreach循环

 for(表达式1;表达式2;表达式3){语句}
 foreach (@a){语句}
 foreach $k(keys%hash){语句}

8.循环控制:last,next,redo

9.标记:goto LABEL

[!--infotagslink--]

相关文章

  • Perl模块编写说明

    这两天在用Perl编写一些监控脚本,其实写代码也是一件挺有意思的事情,就是挺废时间的。而且,由于语法不太熟,基本想到一个东西都要先Google一下看怎么实现。...2020-06-29
  • perl 模式匹配参数详解

    一、简介 模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def。其用法如结合函数split将字符串用某模式分成多个单词:@array = split(/ /, $line);二、匹配...2020-06-29
  • Perl与JS的对比分析(数组、哈希)

    下面小编就为大家带来一篇Perl与JS的对比分析(数组、哈希)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-29
  • Perl localtime时间函数的应用介绍

    Perl时间函数localtime的使用介绍,这里简单的介绍下,更多请查看官方介绍...2020-06-29
  • Perl中的特殊内置变量详细介绍

    这篇文章主要介绍了Perl中的特殊内置变量详细介绍,需要的朋友可以参考下...2020-06-29
  • perl 列表和数组变量详解

    一、列表 列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:()。 注:只含有一个数值的列表(如:(43.2) )与该数值本身(即:43.2 )是不同...2020-06-29
  • 讲Perl中的本地时间与UNIX时间戳间相互转换的方法

    这篇文章主要介绍了讲Perl中的本地时间与UNIX时间戳间相互转换的方法,主要用到了Perl中的Date::Parse模块,需要的朋友可以参考下...2020-06-29
  • Perl 批量添加Copyright版权信息

    对所有输入文件,如果没有版权信息则加上版权信息,否则什么都不做,并对原文件以.bak结尾备份,需要的朋友可以参考下...2020-06-29
  • Perl学习笔记之CPAN使用介绍

    这篇文章主要介绍了Perl学习笔记之CPAN使用介绍,本文讲解了什么是CPAN、CPAN的目录作用介绍、CPAN安装Perl Module的两种方法等内容,需要的朋友可以参考下...2020-06-29
  • Perl中使用MIME::Lite发送邮件实例

    这篇文章主要介绍了Perl中使用MIME::Lite发送邮件实例,本文介绍了使用sendmail方式发送、发送HTML格式邮件、smtp方式发送邮件等内容,需要的朋友可以参考下...2020-06-29
  • Perl AnyEvent中的watcher实例

    这篇文章主要介绍了Perl AnyEvent中的watcher实例,关于AnyEvent请参阅的更多介绍请参阅文中的相关链接,需要的朋友可以参考下...2020-06-29
  • perl获取日期与时间的实例代码

    perl获取日期与时间的例子,供大家学习参考...2020-06-29
  • Perl中的列表和数组学习笔记

    这篇文章主要介绍了Perl中的列表和数组学习笔记,本文讲解了列表、数组--列表的存贮、数组的存取、字符串中的方括号和变量替换、列表范围、数组的输出等内容,需要的朋友可以参考下...2020-06-29
  • 使用perl实现拆分数据表(mysql)并迁移数据实例

    这篇文章主要介绍了使用perl实现拆分数据表(mysql)并迁移数据实例,本文提供了3个脚本,分别用于拆分数据表、迁移数据、插入测试数据,需要的朋友可以参考下...2020-06-29
  • perl后门,正向和反向!实例代码

    写过很多关于Perl编程,今天继续分享一篇利用perl后门实现正向和反向连接的实例代码,需要的朋友可以参考下其中的内容详情...2020-06-29
  • 7个perl数组高级操作技巧分享

    这篇文章主要介绍了7个perl数组高级操作技巧,本文讲解了数组去重、数组合并、查找最大值、列表归并等内容,需要的朋友可以参考下...2020-06-29
  • perl uc,lc,ucfirst,lcfirst大小写转换函数

    这篇文章主要介绍了perl 大小写字母转换函数,需要的朋友可以参考下...2020-06-29
  • Perl内置特殊变量总结

    这篇文章主要介绍了Perl内置特殊变量总结,需要的朋友可以参考下...2020-06-29
  • perl 文件操作总结

    perl 文件操作总结,需要的朋友可以参考下...2020-06-29
  • Perl学习笔记之文件操作

    这篇文章主要介绍了Perl学习笔记之文件操作,本文分别给出了打开文件、读取文件、写入文件代码实例,需要的朋友可以参考下...2020-06-29