Forum Webscript.Ru
Программирование => Perl => Тема начата: Hob от 01 Декабря 2006, 19:16:00
-
Здравствуйте,
Есть массив такого вида:
push @users, {\'ID\'=>$userid, \'USER\'=>$usernick, \'STATUS\'=>$status, \'N\'=>$n};
Создал функцию:
sub sortmh {
my ($mas,$key) = @_;
$mas = [ sort {$a->{$key}<=>$b->{$key}} @$mas ];
}
sortmh(\\@users, \'N\');
Не подскажете, почему он неправильно сортирует?
-
Что значит неправильно? Что в $n? Если цифры - то правильно.
-
NeoNox
Цифры.
У меня потом заполняется js массив значениями. Я предполагаю, что он должен отсортироваться при заполнении, а он так и остаётся 2 1 4 6 (по N)
var allUsers = new Array([% FOREACH U = USERS %][% U.ID %],\'[% U.USER %]\',\'[% U.STATUS %]\',[% U.N %],[% END %]0);
-
А перл тут при чем? Ищите проблему в другом месте.
Не умеете локализовать проблему? Я помогу:
#!/usr/bin/perl
use Data::Dumper;
for (40..49)
{
push @users, {\'ID\'=>\'userid\'.$_ , \'USER\'=>"usernick".$_, \'STATUS\'=>"status".$_, \'N\'=>$_};
}
for (1..3)
{
push @users, {\'ID\'=>\'userid\'.$_ , \'USER\'=>"usernick".$_, \'STATUS\'=>"status".$_, \'N\'=>$_};
}
sub sortmh {
my ($mas,$key) = @_;
print Dumper(@$mas);
print "========================================\\n";
$mas = [ sort {$a->{$key}<=>$b->{$key}} @$mas ];
print Dumper(@$mas);
}
sortmh(\\@users, \'N\');
$VAR1 = {
\'ID\' => \'userid40\',
\'N\' => 40,
\'STATUS\' => \'status40\',
\'USER\' => \'usernick40\'
};
$VAR2 = {
\'ID\' => \'userid41\',
\'N\' => 41,
\'STATUS\' => \'status41\',
\'USER\' => \'usernick41\'
};
$VAR3 = {
\'ID\' => \'userid42\',
\'N\' => 42,
\'STATUS\' => \'status42\',
\'USER\' => \'usernick42\'
};
$VAR4 = {
\'ID\' => \'userid43\',
\'N\' => 43,
\'STATUS\' => \'status43\',
\'USER\' => \'usernick43\'
};
$VAR5 = {
\'ID\' => \'userid44\',
\'N\' => 44,
\'STATUS\' => \'status44\',
\'USER\' => \'usernick44\'
};
$VAR6 = {
\'ID\' => \'userid45\',
\'N\' => 45,
\'STATUS\' => \'status45\',
\'USER\' => \'usernick45\'
};
$VAR7 = {
\'ID\' => \'userid46\',
\'N\' => 46,
\'STATUS\' => \'status46\',
\'USER\' => \'usernick46\'
};
$VAR8 = {
\'ID\' => \'userid47\',
\'N\' => 47,
\'STATUS\' => \'status47\',
\'USER\' => \'usernick47\'
};
$VAR9 = {
\'ID\' => \'userid48\',
\'N\' => 48,
\'STATUS\' => \'status48\',
\'USER\' => \'usernick48\'
};
$VAR10 = {
\'ID\' => \'userid49\',
\'N\' => 49,
\'STATUS\' => \'status49\',
\'USER\' => \'usernick49\'
};
$VAR11 = {
\'ID\' => \'userid1\',
\'N\' => 1,
\'STATUS\' => \'status1\',
\'USER\' => \'usernick1\'
};
$VAR12 = {
\'ID\' => \'userid2\',
\'N\' => 2,
\'STATUS\' => \'status2\',
\'USER\' => \'usernick2\'
};
$VAR13 = {
\'ID\' => \'userid3\',
\'N\' => 3,
\'STATUS\' => \'status3\',
\'USER\' => \'usernick3\'
};
========================================
$VAR1 = {
\'ID\' => \'userid1\',
\'N\' => 1,
\'STATUS\' => \'status1\',
\'USER\' => \'usernick1\'
};
$VAR2 = {
\'ID\' => \'userid2\',
\'N\' => 2,
\'STATUS\' => \'status2\',
\'USER\' => \'usernick2\'
};
$VAR3 = {
\'ID\' => \'userid3\',
\'N\' => 3,
\'STATUS\' => \'status3\',
\'USER\' => \'usernick3\'
};
$VAR4 = {
\'ID\' => \'userid40\',
\'N\' => 40,
\'STATUS\' => \'status40\',
\'USER\' => \'usernick40\'
};
$VAR5 = {
\'ID\' => \'userid41\',
\'N\' => 41,
\'STATUS\' => \'status41\',
\'USER\' => \'usernick41\'
};
$VAR6 = {
\'ID\' => \'userid42\',
\'N\' => 42,
\'STATUS\' => \'status42\',
\'USER\' => \'usernick42\'
};
$VAR7 = {
\'ID\' => \'userid43\',
\'N\' => 43,
\'STATUS\' => \'status43\',
\'USER\' => \'usernick43\'
};
$VAR8 = {
\'ID\' => \'userid44\',
\'N\' => 44,
\'STATUS\' => \'status44\',
\'USER\' => \'usernick44\'
};
$VAR9 = {
\'ID\' => \'userid45\',
\'N\' => 45,
\'STATUS\' => \'status45\',
\'USER\' => \'usernick45\'
};
$VAR10 = {
\'ID\' => \'userid46\',
\'N\' => 46,
\'STATUS\' => \'status46\',
\'USER\' => \'usernick46\'
};
$VAR11 = {
\'ID\' => \'userid47\',
\'N\' => 47,
\'STATUS\' => \'status47\',
\'USER\' => \'usernick47\'
};
$VAR12 = {
\'ID\' => \'userid48\',
\'N\' => 48,
\'STATUS\' => \'status48\',
\'USER\' => \'usernick48\'
};
$VAR13 = {
\'ID\' => \'userid49\',
\'N\' => 49,
\'STATUS\' => \'status49\',
\'USER\' => \'usernick49\'
};
Ищите в темплейте что не так.