數組與哈希:
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的強大了。
爲了有朝一日能寫出簡潔優雅的程序,慢慢繼續學吧!!!