初次接觸Perl
阿新 • • 發佈:2018-11-14
一、簡介
Perl 語言的應用範圍很廣,由於其靈活性,Perl被稱為指令碼語言中的瑞士軍刀。
摘自 http://www.runoob.com/perl/perl-tutorial.html
二、基礎
1、第一個檔案
#!/usr/bin/perl # 輸出 "Hello, World" print "Hello, world\n"; print 'Hello, world\n';
# 輸出結果
Hello, world
Hello, world\n
從上邊程式碼可以先看出,Perl中單引號和雙引號作用是有差別的。雙引號支援加 \ 轉義,但是單引號不會進行轉義,照樣輸出
2、基本資料型別
(1)標量:包括字串、整型、浮點型, 以$開頭。
$myfirst=123; #數字123
$mysecond="123"; #字串123
注:當標量為整型時,可以很方便的表示8進位制和16進位制數:8進位制以0開始,16進位制以0x開始。 例如:
$var1 = 047; #等於十進位制的39
$war2 = 0x1f; #等於十進位制的31
(2)陣列:陣列變數以字元"@"開頭,索引從0開始,如:@arr=(1,2,3)
(3)雜湊:雜湊是一個無序的 key/value 對集合。可以使用鍵作為下標獲取值。雜湊變數以字元"%"開頭。 如:%h=('a'=>1,'b'=>2); 或者 %h=('a', 1, 'b', 2);
(4) 如果將陣列賦值給標量,返回的是陣列的長度。例如 :
@names = ('google', 'runoob', 'taobao'); @copy = @names; # 複製陣列 $size = @names; # 陣列賦值給標量,返回陣列元素個數 print "名字為 : @copy\n"; print "名字數為 : $size\n";
# 名字為 : google runoob taobao
# 名字數為 : 3
3、特殊字元
以下我們將演示 Perl 中特殊字元的應用,如 __FILE__, __LINE__, 和 __PACKAGE__ 分別表示當前執行指令碼的檔名,行號,包名。
#!/usr/bin/perl print "檔名 ". __FILE__ . "\n"; print "行號 " . __LINE__ ."\n"; print "包名 " . __PACKAGE__ ."\n"; # 無法解析 print "__FILE__ __LINE__ __PACKAGE__\n"; # 檔名 test.pl # 行號 4 # 包名 main # __FILE__ __LINE__ __PACKAGE__
4、陣列
(1)陣列變數以 @ 符號開始,元素放在括號內,也可以以 qw 開始定義陣列。
@sites = qw/google taobao runoob/; print "$sites[0]\n"; print "$sites[1]\n"; print "$sites[2]\n"; print "$sites[-1]\n"; # 負數,反向讀取 # 輸出 # google # taobao # runoob # runoob
(2)Perl 提供了可以按序列輸出的陣列形式,格式為 起始值 + .. + 結束值
#!/usr/bin/perl @var_10 = (1..10); @var_20 = (10..20); @var_abc = (a..z); print "@var_10\n"; # 輸出 1 到 10 print "@var_20\n"; # 輸出 10 到 20 print "@var_abc\n"; # 輸出 a 到 z
(3)
#!/usr/bin/perl # 建立一個簡單是陣列 @sites = ("google","runoob","taobao"); print "1. \@sites = @sites\n"; # 在陣列結尾新增一個元素 push(@sites, "baidu"); print "2. \@sites = @sites\n"; # 在陣列開頭新增一個元素 unshift(@sites, "weibo"); print "3. \@sites = @sites\n"; # 刪除陣列末尾的元素 pop(@sites); print "4. \@sites = @sites\n"; # 移除陣列開頭的元素 shift(@sites); print "5. \@sites = @sites\n";
(4)陣列索引需要指定有效的索引值,可以是正數後負數,每個索引值使用逗號隔開。
如果是連續的索引,可以使用 .. 來表示指定範圍:
#!/usr/bin/perl @sites = qw/google taobao runoob weibo qq facebook 網易/; @sites2 = @sites[3..5]; print "@sites2\n";
# 輸出 # weibo qq facebook
(5)Perl 中陣列元素替換使用 splice() 函式,語法格式如下:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
引數說明:
- @ARRAY:要替換的陣列。
- OFFSET:起始位置。
- LENGTH:替換的元素個數。
- LIST:替換元素列表。
以下例項從第6個元素開始替換陣列中的5個元素:
#!/usr/bin/perl @nums = (1..20); print "替換前 - @nums\n"; splice(@nums, 5, 5, 21..25); print "替換後 - @nums\n"; #輸出 # 替換前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 替換後 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20