要以多個keys來sort,將所有以or連線起來的比較操作,放在乙個子函式裡即可。將主要的比較操作放在前面,次要的放在後面。
# an array of references to anonymous hashes
my@employees=(
,,,,
,);sub seniority
<=>
$a->
#salary 數字降序
or$b
->
<=>
$a->
#age 數字降序
or$a
->
cmp$b
->
#last ascii公升序
or$a
->
cmp$b
->
#first ascii公升序}my
@ranked
= sort seniority @employees
;foreach
my$emp
(@ranked
)\t$emp->\t$emp-> $emp->\n"
;}
列印結果是:
600000
45 bill gates
600000
41 steve ballmer
55000
29 sally developer
55000
29 george tester
55000
29 joe tester
上述code看起來很複雜,實際上很容易理解哦。@employees陣列的元素是匿名hash。匿名hash實際上是個引用,可使用->操作符來訪問其值,例如$employees[0]->可訪問到第乙個匿名hash裡salary對應的值。所以上述各項比較就很清楚了,先比較salary的值,再比較age的值,再比較last的值,最後比較first的值。注意前2項比較是降序的,後2項是公升序的,不要搞混了哦。 perl中的hash結構
perl中陣列與雜湊的差別是 雜湊是按照名字來訪問它們的標量的,而不是像陣列那樣使用數字標號進行訪問。hash的定義用 陣列的定義用 對hash結構進行賦值 author author franker 逗號箭頭運算子,即 利用 箭頭對hash進行初始化 從hash中讀取元素 print author...
perl中的hash結構
perl中陣列與雜湊的差別是 雜湊是按照名字來訪問它們的標量的,而不是像陣列那樣使用數字標號進行訪問。hash的定義用 陣列的定義用 對hash結構進行賦值 author author franker 逗號箭頭運算子,即 利用 箭頭對hash進行初始化 從hash中讀取元素 print author...
perl方法傳遞hash引數
1 如果是 只有乙個引數要傳,且是hash,最直接想到的辦法就是像傳其他型別引數一樣直接傳,如 subfuntion hash1 2 如果有 多於乙個引數要傳,這裡假設只有乙個引數的型別是hash的,並把hash放到最前面,如 subfuntion hash1,var2 這樣做結果是錯誤的,結果是子...