数组与哈希:
Perl的数组相信是与其它语言都不太一样的地方,像它的$表示操作的是单个值,是一个元素,注意:可以是标量变量,也可以是数组或者散列中的某个元素。
如:
$a $array[1] $hash{'key'}都表示一个元素
而对于@符号,它所代表的是数组,多个值,或者说,一个集合,代表你操作的是多个元素
数组和散列也是Perl中仅有的具备集合性质的数据类型
如:
@array @array[0,3,9] @hash{qw{key1 key2}} #后两个表示切片
切片:
Perl中比较有意思的便是切片,它是数组或者哈希的一个片段,或者称为切片
对于@a[1]来说,它指的就是切片,因为它用的是@符号,或许你会认为这是表示取数组a的1号元素,但是,它是切片,如果你仅仅需要单个元素,就要用$
而切片对我们来说非常有用:
比如,将@a中的1、2号元素赋值,那么你可能会用到
$a[1] = "val1";
$a[2] = "val2";
但是用切片的话就会显得简洁优雅了:
@a[1,2] = qw(val1 val2);
还有写非常好的例子:
比如
@list[2..7] = reverse @list[2..7];
@list[reverse 2..7] = @list[2..7]; #反转数组的2到7号元素
@num{'A'.. 'Z'} = 1..26;#快速创建散列
@hash{'old','new'}= hash{'new','old'};交换两个元素
总之,学会使用切片能让你的Perl程序显得简洁而优雅
多维数组:
如果需要访问多维数组的单个元素,就得这样使用,不可与其它高级语言弄混
$a->[1][2]
Perl语言在大多数人的眼中,认为用它写的程序很难看懂,的确,Perl有很多技巧性的东西,而Larry Wall设计Perl的初衷就是为了让它简洁而优雅得处理问题,用Perl写程序基本上几行就能搞定,而稍复杂的程序也不会超过满屏(好吧,这是我这种菜鸟还达不到的程度。。。)
Larry Wall就是个语言学家,因此Perl有着更接近人类语言的特点,我现在也越来越能体会到Perl的强大了。
为了有朝一日能写出简洁优雅的程序,慢慢继续学吧!!!