Eri*_*tis 7 arrays sorting perl
考虑下面的数据块,我如何维护第3个字段对数组进行排序,并继续推送项目?
$VAR1 = [
'1111',
'http://...',
3 #this is one of the 3rd field mentioned above
];
$VARN = [
'5555',
'http://...',
0
];
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像:
my @curItem = ($item->{id}, $item->{href}, getTotal( $item->{id}) );
push @items, \@curItem;
Run Code Online (Sandbox Code Playgroud)
我发现这个模块与我需要的类似.
任何帮助赞赏.
您可以使用该模块,只需提供排序:
tie @a, "Tie::Array::Sorted", sub { $_[0]->[2] <=> $_[1]->[2] };
(或者沿着这些方向的东西......我将不得不检查它.基本上,你需要根据你传入的数组ref的元素进行排序)
编辑:是的,这适用于您的数据.刚检查一下:
use Tie::Array::Sorted;
tie @a, "Tie::Array::Sorted", sub { $_[0]->[2] <=> $_[1]->[2] };
push @a, [ "1111", "http:// ...", 3];
push @a, [ "5555", "http:// ...", 0];
foreach $ref (@a)
{
print $ref . "\n";
print "@$ref \n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
ARRAY(0x9130888)
5555 http:// ... 0
ARRAY(0x90dd818)
1111 http:// ... 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3905 次 |
| 最近记录: |