Добрый день,
Стыдно признаться, но не могу сообразиьб как сделать красиво и оптимально =)
есть хеш %USERS примерно такой структуры
$VAR1= 'aks';
$VAR2= {
'mobile' => '9',
'roomNumber' => '609',
'departmentNumber' => '123',
'mail' => '
[email protected]',
'homePhone' => '123456',
'title' => 'Ведущий спец',
'displayName' => 'Ашурбанипал Калиострович Сискаридзе'
};
$VAR3= 'malt';
$VAR4= {
'businessCategory' => 'Экономический отдел',
'roomNumber' => '3-1',
'departmentNumber' => '168',
'title' => 'Экономист по бухгалтерскому учету и анализу хозяйственной деятельности',
'mail' => '
[email protected]',
'displayName' => 'Максимова Анастасия Теодоровна'
};
...
т.е. $USERS{login}{поле}
самих полей много и у всех разные, большинство конечно присутствуют у всех. Хочу иметь возможность выводить с сортировкой по полям displayName, ну и roomNumber.. по умолчанию выводится как попало
foreach my $login (keys %USERS)
{
foreach my $field (keys %{$USERS{$login}} )
{
print $USERS{$login}{'displayName'}.'-' if ($field eq 'displayName');
}
print "\n";
}
пытался типа свою сортировку подсунуть во второй цикл, но все тщетно, да и неудивительно, в момент работы второго цикла он же знает только о текущем юзере ($login из первого цикла)
foreach my $login (keys %USERS)
{
foreach my $field (sort {($a eq $b) && ($a=~/displayName/i) && ($USERS{$login}{$a} cmp $USERS{$login}{$b})} keys %{$USERS{$login}} )
{
print $USERS{$login}{'displayName'}.'-' if ($field eq 'displayName');
}
print "\n";
}
Короче, как универсально сделать, чтобы сортировать по разным полям.. достаточно просто printом выплюнуть..</lj-cut>
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.