Perl 陣列
陣列是一種特殊型別的變數,它以列表的形式儲存資料,可以使用索引來訪問每個元素,索引號對於每個元素都是唯一的。你可以在陣列中儲存數字、字串、浮點值等。這看起來很棒,那麼我們如何在 Perl 中建立一個陣列呢?在 Perl 中,你可以使用 @
字元後跟要提供的名稱來定義陣列。
比如,我們在 Perl 中定義一個陣列。
my @array
這是我們在 Perl 中定義陣列的方式;你可能正在考慮我們需要如何在其中儲存資料。在陣列中儲存資料的方法有很多種。這取決於你將如何使用它。
my @array=(a,b,c,d);
print @array;
輸出:
a b c d
這是一個包含 4 個元素的陣列。
陣列索引從 0
開始並結束到其最大宣告的陣列大小,在這種情況下,最大索引大小為 3
。
@array = qw(a b c d);
你也可以用上面的方式宣告一個陣列。唯一的區別是,它將資料儲存到一個陣列中,將空白空間作為分隔符。這裡,qw
表示引用詞。此函式的意義在於生成單詞列表。你可以通過多種方式使用 qw
來宣告陣列。
@array1=qw/a b c d/;
@array2= qw' p q r s';
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;
輸出:
abcdpqrsvxyz
假設你要為陣列的第 5 個元素賦值,我們可以這樣來做,
$array [4] ='e';
順序陣列
順序陣列是你按順序儲存資料的陣列。假設你要在陣列中儲存 1-10 個數字或字母 a-z。你可以用下面的程式碼,而不用輸入所有字母 -
@numbers= (1..10);
print @numbers; #Prints numbers from 1 to 10;
輸出:
12345678910
Perl 陣列大小
我們有一個已經可用的陣列,你不知道該陣列的大小是多少,那麼如何來得到陣列的大小呢?
@array= qw/a b c d e/;
print $size=scalar (@array);
我們可以在不使用函式的情況下獲得陣列的大小嗎?答案是可以的。
@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1; # $#array will print the Max Index of the array, which is 5 in this case
輸出:
5
5
動態陣列
上面宣告一個陣列的方法稱為靜態陣列,這種方法下你知道陣列的大小。
什麼是動態陣列?
動態陣列是你宣告的陣列,但並不指定任何值。那麼我們什麼時候才能在該陣列中儲存值?很簡單,我們在執行時儲存它們。這是一個簡單的程式。
我們將使用一些內建的 Perl 函式來完成此任務。
my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}
輸出:
This is
kind of dyn
mic
rr
y
split
函式根據提供給它的分隔符將 string 的內容拆分為一個陣列。這個函式也會從字串中刪除分隔符,在這種情況下,它是 a
。
Perl 陣列的 Push,Pop,shift,unshift:
可以在 Perl 中使用這些函式來新增/刪除陣列元素。
- Perl Push:在現有陣列的末尾新增陣列元素。 - Perl Pop:從陣列中刪除最後一個元素。 - Perl Shift:從陣列中刪除第一個元素。 - Perl Unshift:在陣列的開頭新增一個元素。
Push,Pop,shift,unshift 例子
@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu"); # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri"); # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n"; # remove one element from the last of an array.
shift(@days); # remove one element from the beginning of an array.
print "5th when shift : @days\n";
輸出:
1st : Mon Tue Wed
2nd when push : Mon Tue Wed Thu
3rd when unshift : Fri Mon Tue Wed Thu
4th when pop : Fri Mon Tue Wed
5th when shift : Mon Tue Wed