如果你是在 Linux/Unix 下,那麼 Man 給我們準備好了各色點心,用 man 加上下面中的類別名就能查閱到對應的幫助,如 man perldata
|
或分 FAQ 來分類手冊,還能在手冊中搜索內容,如 man perlfunc split --- 搜索 split 函數的使用 man perlvar ARGV --- 內置變量 ARGV 的幫助信息 |
2. 變量的語法
象英語一樣,Perl 變量類型之間區別主要是單數和複數,字符串和數字是單個數據,而一組數字和字符串是複數。我們叫把單數變量稱爲標量,而把複數變量稱爲數組。
通常我們用 $ 開頭的名稱表示標量,與此對應的數組變量使用 @ 開頭。。(可以將 $ 理解成代表 "s" 或 "scalar"(標量),而 @ 表示 "a" 或 "array" (數組)來幫助你記憶。)
Perl 還有象“散列”,“句柄”,“類型團”等其他一些變量類型,與標量和數組一樣,這些變量類型也是前導趣味字符,下面是你將會碰到的所有趣味字符:
類型 | 字符 | 例子 | 用於哪種名字 |
標量 | $ | $cents | 一個獨立的數值(數字或字串) |
數組 | @ | @large | 一列數值,用編號做鍵字 |
散列 | % | %interest | 一組數值,用字串做鍵字 |
子過程 | & | &how | 一段可以調用的 Perl 代碼 |
類型團 | * | *struck | 所有叫 struck 的東西 |
2.1 單數變量
$answer = 42; # 一個整數
$pi = 3.14159265 # 一個"實"數
$pet = "Camel"; # 字串
$sign = "I ove my $pet"; # 帶代換的字串
$cose = 'It cose $100'; # 不帶代換的字串
$thence = $whence; # 另一個變量的數值
$salsa = $moles * $avocados; # 一個胃化學表達式
$exit = system("vi $file"); # 一條命令的數字狀態
$cwd = `pwd`; # 從一個命令輸出的字串
如果你使用了一個尚未賦值的變量,這個未初始化的變量會在需要的時候自動存在.遵循最小意外的原則,該變量按照常規初始化爲空值,"" 或 0。
不同的操作符會給參數提供一個數字環境,字符串環境或布爾環境.例如:
$camels = '123';
print $camels +1, "/n";
輸出爲 124。
"/n" 表示的新行同樣也在字符串環境中,但是由於它本來就是一個字符串,因此就沒有必要做轉換了.
'/n',這就表示這是由反斜扛和 n 兩個字符組成的字符串,而不表示一個新行.
從某種意義上來說,使用單引號和雙引號也是另外一種提供不同環境方法.雙引號環境在 Perl 中稱爲代換環境.
1.2.3 複數變量
Perl 有兩種類型的多值變量:數組和散列,它們提供一個列表環境而不是標量環境.
數組.一個數組是多個標量的有序列表,可以用標量在列表中的位置來訪問要對一個數組賦值,你只需簡單的將這些值排列在一起,並用大括弧括起來.
@home = ("couch", "chair", "table", "stove");
從數組給標量賦值:(有點類似 PL/SQL 中的遊標賦值給多個變量)
($potato, $lift, $tennis, $pipe) = @home;
他們被稱爲列表賦值,他們邏輯上平行發生,因此你可以象下面一樣交換兩個變量:
($alpha, $omega) = ( $omega, $alpha);
數組變量的引用,賦值,如上的數組 @home,引用第一個元素就是 $home[0],注意是從 0 開始,因爲我們處理的這個數組元素是標量,因此在他前面總是前綴 $.
數組是有序的,你可以在它上面做很多有用操作.如作爲堆棧 push 和 pop,Perl 將你數組的結尾當成堆棧的頂端。
散列是一組無序標量,通過和每個標量關聯的字符串進行訪問.散列經常被稱爲關聯數組.
散列使用 % 這個趣味字符來標誌散列名字(如果你仔細觀察 %,你會發現斜扛兩邊的鍵字和數值.這樣理解可能會幫助記憶.)
散列的聲明:
%longday = ("Sun", "Sunday", "Mon", "Monday", "Tue", "Tuesday");
或(無疑第二種方式易讀好理解)
%longday = ("Sun" => "Sunday","Mon" => "Monday","Tue" => "Tuesday");
可以通過 {} 來獲取單個的散列元素.比如,你應該使用 $longday{"Mon"}.注意因爲你在處理標量,因此在 longday 前面使用 $,而不是 %,% 代表整個散列.
我們注意到變量中的 $、@ 或 % 不像其他語言的變量名中相對應的符號(其他語言的變量命名中一般只允許 $),它們不是作爲變量名的一部分,而是承載着變量類型的說明。所以當你看到訪問 @home、%longday 變量中的單個元素用的是 $home[0]、$longday{"Mon"} 不要感到驚訝,而是要去習慣這種用法。
強調一下:數組和列表聲明時都用括號"()",訪問數組和列表的元素時分別用中括號"[]" 和 大括號 "{}"。