1. 程式人生 > >初次接觸Perl

初次接觸Perl

一、簡介

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