Perl作为一种脚本语言,用于自然语言处理和文本相关的问题上,非常简单直接。最近用的也比较多,在这里做一个小总结吧。
首先介绍一下数据类型(变量类型),perl中有三种类型的变量,用不同的前缀来区分,如下所示。Perl中的变量是不需声明也可直接使用的,但是声明变量有助于查错,是比较好的编程习惯,还是建议大家在使用之前先声明一下吧。
1、Scalar(标量)
标量是Perl中最简单最基础的一种数据类型,可以是一个字符、字符串或者数字(整数或浮点数)。变量变量以$开头。如下:
my $x = “dollar”;
my $y = 12345;
my $z = 1.2345;
数字和串等之间的转换如下所示:
数字和数字之间的比较和C语言一致,为"=="。
定义串常用到的符号:
字符串中会用到的函数:
2、数组(Array)
数组(array)内存放的变量为列表,列表可以看做一系列标量的一个有序集合,和C里面的数组不同的是,这里的数组不要求内部所有变量是同一种类型的,也就是说,数组中可以同时存储字符串和数值。数组变量以@开头,如下所示:
my @arr = (22, “why”, 12.34);
my @arr = (length(“why”), “hello”. “name”;
my @arr = ($var, 1.23*55);
my $var = $arr[5]; # $var will get undef
$arr[5] = 8; # @arr changes to (1,2,3,undef,undef,8)
数组中会用到的函数:
3、Hash(哈稀)和散列
Perl里面的哈稀是值对,一个键对应一个值,其中键必须唯一,可以通过键来映射到值。如下所示:
my %hash = ("red" => "apple", 2.5 => 1, "yellow" => "banana", 3.14 => "pi");
符号"=>"很好的表示了哈稀结构中键与值的映射关系,左侧为键,右侧为值。
哈希中会用到的函数:
4、引用(reference)
提完前面3中类型的变量,我觉得不得不接着提一下引用。Perl里的引用非常强大,你可以创建一个引用让它指向一个数组。Perl 中有两种引用:硬引用和符号引用。因为符号引用被use stric t 禁止了,所以一般的引用都指的硬引用。
二、基本操作符
1.赋值运算符
即最常见的“=”操作符,它把右边的表达式的值赋给它左边的变量,例如:
$str = "string";
2.算术操作符
见下表:
3.字符操作符
Perl 的字符串操作符包括连接操作符” .”和复制操作符”x”:
$example = ‘Hello’ . ’World’ ;
$example = ”\t” x 8;
@array = ( 1, 2, 3, 4, 5 ) x 2; # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5) ;
4.比较操作符
5.逻辑操作符
6.组合赋值操作符
三、标量上下文和列表上下文
在perl里面上下文是一个非常重要的概念,在写perl脚本的时候我们无时无刻不在使用它。
在Perl中,所谓上下文,是指同一个表达式,出现在不同的地方会有不同的结果和意义。体现最明显的是标量和列表两种变量,所以有标量上下文和列表上下文。标量上下文中的表达式被期望返回一个标量值,而列表上下文中的表达式则被期望返回一个列表。例如:
5 * guess
shift guess
keys guess
上述的例子中,guess出现在三个地方:乘号操作符期望它是一个数值,因此第一个guess处于标量上下文,更准确点是数值上下文;shift操作符期望它是一个列表,因此第二个guess就处于列表上下文;最后keys函数期望something是一个哈稀结构,所以最后一个guess就处于散列上下文。
在标量上下文中使用产生列表的表达式大多数情况下会返回列表元素的个数,在列表上下文中使用产生标量的表达式,它会自动产生一个仅含此标量值的列表,即使这个标量值为undef。