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