Perl包含hash的list排序

2021-10-11 00:01:34 字數 1023 閱讀 8057

要以多個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 這樣做結果是錯誤的,結果是子...