在变量赋值后,解释器会自动分配匹配的类型空间。变量使用等号(=)来赋值。在程序中使用 use strict 语句让所有变量需要强制声明类型。
标量
数字型标量
简单,不多赘述
字符串标量
注意单引号和双引号的区别
标量的运算
#!/usr/bin/perl
$str = "hello" . "world"; # 字符串连接
$num = 5 + 10; # 两数相加
$mul = 4 * 5; # 两数相乘
$mix = $str . $num; # 连接字符串和数字
特殊字符
Perl 中特殊字符的应用,如 FILE, LINE, 和 PACKAGE 分别表示当前执行脚本的文件名,行号,包名。
注意:__ 是两条下划线,FILE 前后各两条下划线。这些特殊字符是单独的标记,不能写在字符串中。
#!/usr/bin/perl
print "文件名 ". __FILE__ . "\n";
print "行号 " . __LINE__ ."\n";
print "包名 " . __PACKAGE__ ."\n";
# 无法解析
print "__FILE__ __LINE__ __PACKAGE__\n";
#输出结果
文件名 test.pl
行号 4
包名 main
__FILE__ __LINE__ __PACKAGE__
数组
数组变量以 @ 符号开始,元素放在括号内,也可以以 qw 开始定义数组。访问数组元素使用$ + 变量名称 + [索引值] 格式来读取
添加和删除数组元素
Perl 提供了一些有用的函数来添加和删除数组元素。
push:在数组最后增加元素
unshift:在数组前面增加元素
pop:删除数组最后一个元素
shift:删除数组第一个元素
替换数组元素
Perl 中数组元素替换使用 splice() 函数,语法格式如下:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
参数说明:
@ARRAY:要替换的数组。
OFFSET:起始位置。
LENGTH:替换的元素个数。
LIST:替换元素列表。
实例:
#!/usr/bin/perl
@nums = (1..20);
print "替换前 - @nums\n";
splice(@nums, 5, 5, 21..25);
print "替换后 - @nums\n";
#运行结果
替换前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
替换后 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20
将字符串转换为数组
Perl 中将字符串转换为数组使用 split() 函数,语法格式如下:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
参数说明:
PATTERN:分隔符,默认为空格。
EXPR:指定字符串数。
LIMIT:如果指定该参数,则返回该数组的元素个数。
将数组转换为字符串
Perl 中将数组转换为字符串使用 join() 函数,语法格式如下:
join EXPR, LIST
参数说明:
EXPR:连接符。
LIST:列表或数组。
数组排序
Perl 中数组排序使用 sort() 函数,语法格式如下:
sort [ SUBROUTINE ] LIST
参数说明:
SUBROUTINE:指定规则。
LIST:列表或数组。
注:数组排序是根据 ASCII 数字值来排序。所以我们在对数组进行排序时最好先将每个元素转换为小写后再排序。
哈希
创建哈希,为每个key指定value,访问哈希元素格式:$h{key}。
读取哈希值
你可以像数组一样从哈希中提取值。哈希值提取到数组语法格式:@{key1,key2}。
#!/uer/bin/perl
%data = (-taobao => 45, -google => 30, -runoob => 40);
@array = @data{-taobao, -runoob};
print "Array : @array\n";
#结果
Array : 45 40
使用 keys 函数读取哈希所有的键:keys %HASH
可以使用 values 函数来读取哈希所有的值:values %HASH
检测元素是否存在
如果你在哈希中读取不存在的 key/value 对 ,会返回 undefined 值,且在执行时会有警告提醒。为了避免这种情况,我们可以使用 exists 函数来判断key是否存在,存在的时候读取:
#!/usr/bin/perl
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
if( exists($data{'facebook'} ) ){
print "facebook 的网址为 $data{'facebook'} \n";
}
else
{
print "facebook 键不存在\n";
}
删除哈希中的元素
删除哈希元素你需要使用 delete 函数
delete $h{$key}