標籤:表變數 分割 perl out offset 數組元素 enc 括弧 exp
Perl 數組
Perl 數組一個是儲存標量值的列表變數,變數可以是不同類型。
陣列變數以 @ 開頭。訪問數組元素使用 $ + 變數名稱 + [索引值] 格式來讀取。
1、建立數組
1.陣列變數以 @ 符號開始,元素放在括弧內,
2.以 qw 開始定義數組,第二個數組使用 qw// 運算子,它返回字串列表,數組元素以空格分隔。
@array1 = (1, 2, ‘Hello‘);
@array2 = [1, 2, ‘Hello‘];
@array3 = qw/this is a array/;
print @array1[0]; #1
print @array1; #12hello
print @array2[0]; #1
print @array2; #ARRAY(0x26e3160)
2、訪問數組元素
訪問數組元素使用 $ + 變數名稱 + [索引值] 格式來讀取。
數組索引值
從正向開始讀取, 0 開始,即 0 為第一個元素,1 為第二個元素,以此類推。
負數從反向開始讀取, -1開始,即 -1 為第一個元素, -2 為第二個元素 。
3、數組序號
Perl 提供了可以按序列輸出的數組形式,格式為 (起始值 .. 結束值)。
#!/usr/bin/perl@var_10 = (1..10); @var_10 = [1..10];print @var_10 #1 2 3 4 5 6 7 8 9 10print @var_10 #ARRAY(0x26e3160)
4、數組大小
數組大小由數組中的標量上下文決定。
。。。。。。
5、添加和刪除數組函數
Perl 提供了一些有用的函數來添加和刪除數組元素。
序號 |
類型和描述 |
1 |
push @ARRAY, LIST 將列表的值放到數組的末尾 |
2 |
pop @ARRAY 彈出數組最後一個值,並返回它 |
3 |
shift @ARRAY 彈出數組第一個值,並返回它。數組的索引值也依次減一。 |
4 |
unshift @ARRAY, LIST 將列表放在數組前面,並返回新數組的元素個數。 |
6、切割數組
我們可以切割一個數組,並返回切割後的新數組:
執行個體
#!/usr/bin/perl@sites = qw/11 22 33 44 55 66 77/; @sites2 = @sites[3,4,5];@sites3 = @sites[3..5]; print "@sites2\n"; #44 55 66print "@sites3\n"; #44 55 66
7、替換數組元素
Perl 中數組元素替換使用 splice() 函數,文法格式如下:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
參數說明:
@ARRAY:要替換的數組。
OFFSET:起始位置。
LENGTH:替換的元素個數。
LIST:替換元素列表。
以下執行個體從第6個元素開始替換數組中的5個元素:執行個體#!/usr/bin/perl @nums = (1..10);print "替換前: @nums\n"; splice(@nums, 5, 5, 21..25);print "替換後: @nums\n";執行以上程式,輸出結果為:替換前:1 2 3 4 5 6 7 8 9 10替換後:1 2 3 4 5 21 22 23 24 25
8、將字串轉換為數組
Perl 中將字串轉換為數組使用 split() 函數,文法格式如下:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
參數說明:
PATTERN:分隔字元,預設為空白格。
EXPR:指定字串數。
LIMIT:如果指定該參數,則返回該數組的元素個數。
樣本:#!/usr/bin/perl # 定義字串$var_1 = "hello";$var_2 = "hello-welcome-world";$var_3 = "hello,welcome,world,goodbye"; # 字串轉為數組@var_1 = split(‘‘, $var_1);@var_2 = split(‘-‘, $var_2);@var_3 = split(‘,‘, $var_3); print "$var_1[1]\n"; # 輸出 eprint "$var_2[1]\n"; # 輸出 welcomeprint "$var_3[1]\n"; # 輸出 welcome
9、將數群組轉換為字串
Perl 中將數群組轉換為字串使用 join() 函數,文法格式如下:
join EXPR, LIST
參數說明:
EXPR:串連符。
LIST:列表或數組。
執行個體#!/usr/bin/perl # 定義字串$var_1 = "hello-welcome-world";$var_2 = "hello,welcome,world,goodbye"; # 字串轉為數組@var_1 = split(‘-‘, $var_1);@var_2 = split(‘,‘, $var_2); # 數組轉為字串$var_1 = join( ‘-‘, @var_1 );$var_2 = join( ‘,‘, @var_2 ); print "$var_1\n";print "$var_2\n";
10、數組排序
Perl 中數組排序使用 sort() 函數,文法格式如下:
sort [ SUBROUTINE ] LIST
參數說明:
SUBROUTINE:指定規則。
LIST:列表或數組。
執行個體#!/usr/bin/perl # 定義數組@sites = qw(hello world say goodbye);print "排序前: @sites\n"; # 對數組進行排序@sites = sort(@sites);print "排序後: @sites\n";執行以上程式,輸出結果為:排序前: hello world say goodbye排序後: hello goodbye say world
11、合并數組
數組的元素是以逗號來分割,我們也可以使用逗號來合并數組,如下所示:
執行個體#!/usr/bin/perl@numbers = (1,3,(4,5,6));print "numbers = @numbers\n"; #numbers = 1 3 4 5 6
也可以在數組中嵌入多個數組,併合併到主數組中:
執行個體#!/usr/bin/perl @odd = (1,3,5);@even = (2, 4, 6); @numbers = (@odd, @even); print "numbers = @numbers\n"; #numbers = 1 3 5 2 4 6
12、從列表中選擇元素
一個列表可以當作一個數組使用,在列表後指定索引值可以讀取指定的元素,如下所示:
執行個體#!/usr/bin/perl $var = (5,4,3,2,1)[4];print "var 的值為 = $var\n" #var 的值為 = 1
Perl 變數:陣列變數