求教一个排序问题

求教一个排序问题

push @students,{"id"=>$id,"name"=>$name};

要对students按id排序,有没有简洁的方法?


谢谢

另外省的再开个主题,请问如何使默认的变量的值为0?
经常有这种警告
Use of uninitialized value in subtraction (-) at stat.pl line 125.



QUOTE:
原帖由 john.daker 于 2008-11-28 14:00 发表
push @students,{"id"=>$id,"name"=>$name};

要对students按id排序,有没有简洁的方法?

自己写个比较函数传给 sort 就行了。

perldoc -f sort



QUOTE:
原帖由 john.daker 于 2008-11-28 14:00 发表
push @students,{"id"=>$id,"name"=>$name};

请问如何使默认的变量的值为0?
经常有这种警告
Use of uninitialized value in subtraction (-) at stat.pl line 125.

这个你自己在声明变量的时候初始化一下就行了。
1:

@sorted = sort {$a->{id} <=> $b->{id}} @students;

这样可以么?

2:

my $var = 0;

这样可以么?
问题是这些变量有时候是
$t->[0]
这种
每次都要?:比较下,代码很难看。。。


QUOTE:
原帖由 john.daker 于 2008-11-28 14:27 发表
问题是这些变量有时候是
$t->[0]
这种
每次都要?:比较下,代码很难看。。。

那你在 排序 前先检查一下,把未初始化的变量赋值不就完了么

或者这样 $t->[0]++ 就不用 : ? 了  
为什么不用 hash?

[Copy to clipboard] [ - ]
CODE:
%students;

$students{$id} = $name;

排序时

for my $id (sort keys(%students)) {
    print $students{$id};
}



QUOTE:
原帖由 longbow0 于 2008-11-28 15:19 发表
为什么不用 hash?

%students;

$students{$id} = $name;

排序时

for my $id (sort keys(%students)) {
    print $students{$id};
}

要是 $id 的值有重复呢?


QUOTE:
原帖由 MMMIX 于 2008-11-28 17:36 发表

要是 $id 的值有重复呢?

student  的 ID 不应该重复吧?
除非是俩学校的。