|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 ic_seu 于 2013-10-8 16:04 编辑
题目:给出5个人的薪水,其中有三个人的是一样的,请用perl排列出薪水值由大到小,薪水一样的按照姓名的ACSII大小值排列。
请问,这个是如何实现? 用sort or 也没想明白。
网上找了个,例子有疑问:1.employees数组的元素是怎么组织的? 为什么第二次是‘{}’ 而不是‘()’?
- @employees = (
- { FIRST =>'Bill', LAST =>'Gates',
- SALARY => 600000, AGE =>; 45 },
- { FIRST =>'George', LAST =>'Tester'
- SALARY =>55000, AGE =>29 },
- { FIRST =>'Steve', LAST =>'Ballmer',
- SALARY =>600000, AGE =>41 }
- { FIRST =>'Sally', LAST => 'Developer',
- SALARY =>55000, AGE =>29 },
- { FIRST =>'Joe', LAST =>'Tester',
- SALARY =>55000, AGE =>29 },
- );
- sub seniority {
- $b->{SALARY} <=> $a->{SALARY}
- or $b->{AGE} <=> $a->{AGE}
- or $a->{LAST} cmp $b->{LAST}
- or $a->{FIRST} cmp $b->{FIRST}
- }
- @ranked = sort seniority @employees;
- foreach $emp (@ranked) {
- print "$emp->{SALARY}$emp->{AGE}$emp->{FIRST}$emp->{LAST} /n";
- }
-
- 打印结果是:
- 600000 45 Bill Gates600000 41 Steve Ballmer
- 55000 29 Sally Developer
- 55000 29 George Tester
- 55000 29 Joe Tester
复制代码 |
|