一個數組隻是一組標量.。它是由個彆標量存儲在一個單一變量的列表。你可以參考每個標內,使用數字索引列表。
數組變量的前綴@符號和填充使用任何括號或qw操作符,例如:
@array = (1, 2, 'Hello'); @array = qw/This is an array/;
第二條生產線使用的qw//運算符,它返回一個字符串列表,由空格分隔的字符串分開。在這個例子中,這導致了四元素的數組第一個元素是“this”和最後(四)是“array”。這意味著你可以使用規範內的換行符:
@days = qw/Monday Tuesday ... Sunday/;
我們也可以單獨指定每個值填充數組:
$array[0] = 'Monday'; ... $array[6] = 'Sunday';
從數組中提取單個元素時,你必須在前麵加上一個美元符號變量,然後追加後,方括號內的元素的索引的名稱。例如:
#!/usr/bin/perl @shortdays = qw/Mon Tue Wed Thu Fri Sat Sun/; print $shortdays[1]; This will print Tue數組索引從零開始,所以在前麵的例子實際上we.ve印有“星期二”。你也可以給,而不是開始一個負index.in這種情況下,你選擇從最後的數組元素。
print $shortdays[0]; # Outputs Mon print $shortdays[6]; # Outputs Sun print $shortdays[-1]; # Also outputs Sun print $shortdays[-7]; # Outputs Mon
Perl提供了一個連續的數字和字母的捷徑。而不是鍵入每個元素,例如,以100計數時,我們可以這樣做:
#!/usr/bin/perl @10 = (1 .. 10); @100 = (1 .. 100; @1000 = (100 .. 1000); @abc = (a .. z); print "@10"; # Prints number starting from 1 to 10 print "@100"; # Prints number starting from 1 to 100 print "@1000"; # Prints number starting from 1 to 1000 print "@abc"; # Prints number starting from a to z
數組的大小可以決定在陣列上使用標量上下文 - 返回值將數組中的元素數量:
@array = (1,2,3); print "Size: ",scalar @array,"\n";
返回的值總是會陣列的物理尺寸,而不是有效的元素數量。可以證明這一點,標量,@array和$#array之間的區彆,使用此片段:
#!/uer/bin/perl @array = (1,2,3); $array[50] = 4; print "Size: ",scalar @array,"\n"; print "Max Index: ", $#array,"\n"; This will return Size: 51 Max Index: 50
隻有四個元素的數組中包含的信息,但數組是51元素長50指數(索引)最高,.
這裡標量函數是用來執行標量上下文,使@數組可以返回數組的大小,否則將返回@陣列的所有在它contacined的元素的列表. |
使用添加/刪除以下功能和元素:
push(): 數組的末尾添加一個元素.
unshift(): 添加一個元素的數組的開頭.
pop(): 刪除數組中最後一個元素.
shift() : 刪除數組的第一個元素.
使用push()或shift()添加元素時,你必須指定兩個參數,第一個數組名和第二個元素的名稱添加。pop()或shift()刪除一個元素,隻需要您發送數組作為參數.
#!/usr/bin/perl # Define an array @coins = ("Quarter","Dime","Nickel"); print "First Statement : @coins"; print "\n"; # Add one element at the end of the array push(@coins, "Penny"); print "Second Statement : @coins - by www.gitbook.net"; print "\n"; # Add one element at the beginning of the array unshift(@coins, "Dollar"); print "Third Statement : @coins"; print "\n"; # Remove one element from the last of the array. pop(@coins); print "Fourth Statement : @coins"; print "\n"; # Remove one element from the beginning of the array. shift(@coins); print "Fifth Statement : @coins"; print "@coins"; Now this will produce following result First Statement : Quarter Dime Nickel Second Statement : Quarter Dime Nickel Penny Third Statement : Dollar Quarter Dime Nickel Penny Fourth Statement : Dollar Quarter Dime Nickel Fifth Statement : Quarter Dime Nickel
你也可以從一個數組中提取的“切片” - 也就是說,你可以選擇多個項目,從一個數組,以產生另一個數組.
@weekdays = @shortdays[0,1,2,3,4];
的一個有效的指標清單,積極或消極的,每個片的規格必須以逗號分隔。為了操作速度,你也可以使用......範圍操作符:
@weekdays = @shortdays[0..4];
範圍也可以在列表:
@weekdays = @shortdays[0..2,6,7];
更換元素可能是splice()函數。 splice()的需要少數的參數和公式如下:
splice(@array,first-element,sequential_length, new elements)
從本質上講,你送PERL的一個數組拚接,然後直接到起始元素計算通過,以取代有多少元素,然後填寫缺少的元素與新的信息.
#!/usr/bin/perl @nums = (1..20); splice(@nums, 5,5,21..25); print "@nums";
這裡實際更換後開始的第五元素,與6號開始。五個元素,然後替換從6-10號碼21-25
與split函數,它是可以轉換成一個字符串數組。要做到這一點,隻需定義一個數組,並設置它等於一個分裂的功能。 Split函數需要兩個參數,第一個字符的分裂和字符串變量.
#!/usr/bin/perl # Define Strings $astring = "Rain-Drops-On-Roses-And-Whiskers-On-Kittens"; $namelist = "Larry,David,Roger,Ken,Michael,Tom"; # Strings are now arrays. Here '-' and ',' works as delimeter -by www.gitbook.net @array = split('-',$astring); @names = split(',',$namelist); print $array[3]; # This will print Roses print "\n"; # This is a new line print $names[4]; # This will print Michael
同樣,我們可以使用join()函數歸隊數組元素,形成一個長的串標.
#!/usr/bin/perl # Define Strings $astring = "Rain-Drops-On-Roses-And-Whiskers-On-Kittens"; $namelist = "Larry,David,Roger,Ken,Michael,Tom"; # Strings are now arrays. Here '-' and ',' works as delimeter @array = split('-',$astring); @names = split(',',$namelist); $string1 = join(",", @array); $string2 = join("-", @names); print $string1; print "\n" ; print $string2; This will produce following result Rain,Drops,On,Roses,And,Whiskers,On,Kittens Larry-David-Roger-Ken-Michael-Tom
sort()函數排序每個元素數組按照ASCII數字標準.
#!/usr/bin/perl # Define an array @foods = qw(pizza steak chicken burgers); print "Before sorting: @foods\n"; # Sort this array @foods = sort(@foods); print "After sorting: @foods\n -by www.gitbook.net"; This will produce following result Before sorting: pizza steak chicken burgers After sorting: burgers chicken pizza steak
請注意,基於ASCII的話數值進行排序。所以最好的辦法是先轉換成小寫字母數組的每個元素,然後執行排序功能. |
$[是一個特殊的變量。這個特彆的變量是一個標量,包含所有陣列的第一個索引。因為Perl數組從零開始的索引,幾乎始終為0。但是,如果你設置$[1,那麼你所有的陣列將使用的索引。建議不要使用除零以外的任何其他索引.
名單實際上是一種特殊的數組類型 - 基本上,列表是一個臨時的結構,擁有一係列值。列表清單中可以使用括號和逗號運算符生成的“手”,
@array = (1,2,3);
或者它可以是一個函數或變量返回的值時,在列表環境計算:
print join(',' @array);
在這裡,@array正在計算在列表上下文中,因為連接函數預期的列表.
因為僅僅是一個逗號分隔的值的序列的列表,你可以結合列表的同時並:
@numbers = (1,3,(4,5,6));
嵌入的清單隻是成為主要list.this的一部分,也意味著我們可以結合在一起陣列:
@numbers = (@odd,@even);
返回列表也可以嵌入到產生一個單一的,最終名單的功能:
@numbers = (primes(),squares());
列表符號是相同的陣列 - 你可以從數組中提取元素,由方括號內追加到列表中,並給予一個或多個索引:
#!/usr/bin/perl $one = (5,4,3,2,1)[4]; print "Value of \$one is $one\n - by www.gitbook.net " This will produce follwoing result Value of $one is 1
同樣,我們可以提取片,雖然冇有領先@character的要求:
#!/usr/bin/perl
@newlist = (5,4,3,2,1)[1..3];
print "value of new list is @newlist\n";
This will produce follwoing result
value of new list is 4 3 2