Perl 基本语法

perl 是一种强大的脚本语言,主要用于脚本处理、报表生成,代码简洁高效,perl可以用少量代码实现其他语言很多行代码才能完成的任务,但是这样的代价就是 perl 难学易忘,而且阅读起来比较费力。

这里简单记录一些 perl 基本语法:

 

1. 创建 Perl 变量

perl 变量分为三种:标量,列表,哈希

一般字符和数字都是标量,创建标量用美元符号 $ 开头:

  $var = "str01";  # 字符变量

  $var = 123;   # 数值变量,注意 perl 每条命令都以分号 ‘;’ 结尾

  注意在比较标量大小时,数值变量用 ==,>=,<=; 而字符变量用 eq,gt,lt

创建列表(即数组)用符号 @ 开头,列表元素用小括号括起来:

  @ary = (aa, bb, cc); 

  访问列表元素用中括号: 

  print  $ary[1];   # 输出结果为 bb ,因为角标是从0开始算

创建哈希用符号%开头,哈希元素用小括号括起来,哈希“键--值”对应可使用“key => value”

  %hash = ( k1 => Jack,k2 => Pony );

  访问哈希元素用花括号:

  say $hash{k2}; # 输出结果为 Pony

 

 

2. Perl 控制流

perl 控制流语法与C语言类似:

如下图示例: if, for, while, foreach (foreach 主要用于处理数组)

注意以下几点:

a) 注意用 foreach 处理数组时,需要小括号将数组名括起来,如上图中的 (@ary),这个小括号不可省略!

b) 上图中用的是 say 命令来打印字符,say 与 print 的区别是 say 会自动给行尾加上回车,而 print 不会。

c) 再判断真假的条件语句中,根据判断条件的不同类型有几种情况:

  如果是数值变量:0为假,其他为真;

  如果是字符变量:空字符串为假,其他为真;

  如果是数组:空数组为假,其他为真;

d) foreach 和 while 等循环语句可以省略元素变量,这时在语句体中用符号 $_ 访问当前元素,示例如下:

  

 

 

3.  Perl 子程序(函数)

  

注意以下几点:

a) 特殊符号 @_ 是一个数组,函数参数就是保存在这个特殊数组中

b) 函数中定义的变量默认是全局变量,最好加上关键字 ’my' 改为局部变量

c) 调用函数时最好在函数名字前加上 ‘&’

d) 允许把调用语句写在创建子程序前面

所以上面这段程序按照规范的写法应该是这样:

  

 

 4. 神奇的钻石操作符

  假设脚本 run.pl 中的内容如下:

  

   文件 file.txt 的内容如下:

  

   然后执行命令  run.pl  ./file.txt,此时脚本中的钻石操作符表示 “每次从文件 file.txt 中读取一行,然后执行打印,接着读取下一行,再打印,直到读完最后一行,退出循环 ”

  而如果脚本 run.pl 中的内容是这样:

  

   同样执行命令 run.pl  ./file.txt,此时钻石操作符表示 “ 将文件 file.txt 中的所有行都读进来,保存成一个列表,列表的每个元素就是文件中的每一行内容,让后用 foreach 遍历这个列表 ”

  所以同样是钻石操作符,在不同的上下文中就表示不同的含义:

  在 while 语句中,while 的条件只能是标量,所以是标量上下文,所以这时每次从文件中取出一行,作为字符串标量来执行一次循环;

  而在 foreach 语句中,是列表上下文,所以这时直接从文件中取出所有的行,组成一个列表。

   根据上面的规则,来看下面的脚本,如果 run.pl 中的内容如下:

  

  命令reverse 只能接受列表参数,所以是列表上下文,执行命令 run.pl  ./file.txt,结果是分三行依次输出 three  two  one

 

5. Perl 中的特殊字符

  a) 字符 @_  : 这是一个列表变量,存储了函数的所有输入参数

  b) 字符  $_   : 一般用在循环体中,表示循环变量的当前值

 

 

 

 

 

 

 

|----------------------------------|

posted @ 2019-10-14 15:10  いつまでも  阅读(3772)  评论(0编辑  收藏  举报