1.数据类型:
标量:用$表示,最简单的一种数据类型。这种数据类型的变量可以是数字,字符串,浮点数,不作严格的区分。
数组:数组变量以字符"@"开头,索引从0开始,如:@arr=(1,2,3)
哈希:哈希变量以字符"%"开头,一个无序的 key/value 对集合。可以使用键作为下标获取值。
Perl为不同变量类型开辟不同的空间,所以不同的变量可以使用同样的名称。 $foo 和 @foo 是两个不同的变量。
2.字符串通常用一个标量表示,但是不是用0表示字符串的结束。
3.Perl双引号和单引号的区别: 双引号可以正常解析一些转义字符与变量,而单引号无法解析会原样输出。
4.创建变量:
标量变量:$age = 25; print "Age = $age\n";
数组变量:数组是用于存储一个有序的标量值的变量,要访问数组的变量,可以使用美元符号($)+变量名,并指定下标来访问。
@ages = (25, 30, 40);
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n"
($前加了转义字符\,会输出$)
哈希变量:哈希是一个 key/value 对的集合,要访问哈希值,可以使用 $ + {key} 格式来访问
%data = ('google', 45, 'runoob', 30, 'taobao', 40);
print "\$data{'google'} = $data{'google'}\n";
print "\$data{'runoob'} = $data{'runoob'}\n";
print "\$data{'taobao'} = $data{'taobao'}\n";
$data{'google'} = 45 $data{'runoob'} = 30 $data{'taobao'} = 40
5.变量上下文:即表达式在的位置,上下文是由等号左边的变量类型决定的,等号左边是标量,则是标量上下文,等号左边是列表,则是列表上下文。
@names = ('google', 'runoob', 'taobao');
@copy = @names; # 复制数组
$size = @names; # 数组赋值给标量,返回数组元素个数
print "名字为 : @copy\n"; google runoob taobao
print "名字数为 : $size\n"; 3
6.Perl 中特殊字符的应用:
__FILE__, __LINE__, 和 __PACKAGE__ 分别表示当前执行脚本的文件名,行号,包名。__ 是两条下划线,__FILE__ 前后各两条下划线。
7.创建数组:数组变量以 @ 符号开始,元素放在括号内 @array = (1, 2, 'Hello');
访问数组元素使用 $ + 变量名称 + [索引值] 格式来读 $array[0]
添加和删除数组元素:push @ARRAY, LIST 将列表LIST的值放到数组ARRAY的末尾
pop @ARRAY 弹出数组最后一个值,并返回它
shift @ARRAY 弹出数组第一个值,并返回它。数组的索引值也依次减一。
unshift @ARRAY, LIST 将列表放在数组前面,并返回新数组的元素个数。
切割数组,返回切割后的新数组:
@sites = qw/google taobao runoob weibo qq facebook 网易/; qw写数组
@sites2 = @sites[3,4,5]; weibo qq facebook
替换数组元素使用 splice() 函数:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ] @ARRAY:要替换的数组,OFFSET:起始位置,LENGTH:替换的元素个数,LIST:替换元素列表。
8.哈希是key和value的组合。
访问哈希元素格式:$哈希名{key}
创建哈希:1.为每个 key 设置 value $data{'google'} = 'google.com';
2.通过列表设置:列表中第一个元素为 key,第二个为 value。
%data = ('google', 'google.com', 'runoob', 'runoob.com', 'taobao', 'taobao.com');
也可以使用 => 符号来设置 key/value:
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
读取哈希值:@哈希名{key1,key2}
读取所有key: keys %哈希名
读取所有值:values %哈希名
哈希检查元素是否存在:如果你在哈希中读取不存在的 key/value 对 ,会返回 undefined 值,且在执行时会有警告提醒。
为了避免这种情况,我们可以使用 exists 函数来判断key是否存在,存在的时候读取:
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
if( exists($data{'facebook'} ) )
{ print "facebook 的网址为 $data{'facebook'} \n"; }
else { print "facebook 键不存在\n"; }
获取哈希大小:通过先获取 key 或 value 的所有元素数组,再计算数组元素多少来获取哈希的大小。
%data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com');
@keys = keys %data;
$size = @keys;
print "1 - 哈希大小: $size\n"; 3
9.文件操作:
读取文件:open(DATA, "<file.txt"); open 函数以只读的方式(<)打开文件 file.txt,DATA 为文件句柄用于读取文件
>表示写入方式,以读写方式打开文件,可以在 > 或 < 字符前添加 + 号,这种方式不会删除文件原来的内容。
读写文件:
读取 import.txt 并将每一行放到 @lines 数组中:
open(DATA,"<import.txt") or die "无法打开数据";
@lines = <DATA>;
print @lines; # 输出数组内容
close(DATA);