2012年10月18日

Learning Perl 2


l   純量是單數(singular);串列和陣列則複數(plular)
l   串列(list)指的是資料的有序集合;而陣列(array)是指可存放資料(包含串列)的那個「變數」
l   串列可以不存放在陣列當中,獨立存在;但每個陣列變數一定要存放一個串列(就算是空的)
l   $#變數名稱」:取得陣列的最後一個元素的索引值
l   陣列索引值放負數表示從尾端開始算,-1最後一個,-2倒數第二個……
l   串列字面值(list literal):圓括號內一串以逗號分隔開的值(數值或字串)
l   串列可用「..」範圍運算符表示兩整數之間間隔為1的串列,小數則取整數,只能由小到大往上計數
l   qw(quoted words/quoted by whitespace),簡化字串陣列的建立,並視每個字串為以單引號來處理
l   界定符(delimiter)不只是圓括號,任何標點符號都可以
l   以串列賦值:($fred, $barney, $dino) = (“first”, 2, nudef)
l   以串列交換兩變數值:($fred, $barney) = ($barney, $fred)
l   @陣列名稱」可直接讀取整個陣列
l   $calar(Scalar)純量;@rray(array)陣列
l   poppush的第一個引數絕對是「陣列」,對串列poppush無意義
l   pop/push從陣列的尾端(索引值高)處理;shift/unshift從陣列的開頭(索引值低)處理;splice從中間任意指定起始位置處理
l   為了避免雙引號內出現非陣列意圖的「@」,可使用反斜線加在「@」之前或用單引號括住字串
l   變量出現在雙引號當中,為了使直譯器與我們有同樣共識,可使用大括號「{}」,e.g. “the value is ${name}.”
l   foreach的控制變數只是對象串列的複製品,因此在迴圈當中做修改會影響到陣列或串列內的內容
l   選擇控制變數不需要擔心之前有重複的,因為迴圈結束之後之前的變數內容會恢復
l   foreach若省略控制變數,則Perl會用預設變數「$_
l   reverse運算符將串列的值反轉後傳回
l   sort讀取串列中的值,並依字符來排序後傳回
l   語境(context):決定變量該扮演甚麼腳色。當Perl剖析(parsing)運算式時會預期它是「純量值」或「串列值」,就稱為語境
l   陣列的名稱,在串列語境下產生一串元素;在純量語境下傳回陣列元素個數
l   強制指定「純量語境」:scalar
l   <STDIN>在純量語境下傳回輸入資料的下一列;串列語境下傳回剩餘的各列

沒有留言:

張貼留言