|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 02 Nov 2002 18:44:16 To : Orlovsky Alexander Subject : Re: сортировка хэша -------------------------------------------------------------------------------- Здравствуй, Orlovsky Alexander. OA> Задрался я тут, может башка плохо варит или еще чего, но в общем вот есть OA> такой сырец: #!/usr/bin/perl #################### use strict; #my OA> $files; #@files = glob($cmd); my %Hcaps = (); OA> foreach my $fname (@ARGV) { OA> print "Processing ". $fname . "\n"; OA> open (FILE, "< $fname") or print STDERR "Warning: can't open file OA> $fname"; OA> while(<FILE>) { OA> <..cut...> OA> здесь мы забиваем хэш OA> $Hcaps{$VALUE}{$EMAIL}++; OA> } OA> } OA> } OA> for my $value (sort %Hcaps) { OA> if ( exists $Hcaps{$value}{"some\@ema.il"} ) { OA> print "$value (some\@ema.il): " . OA> $Hcaps{$value}{"some\@ema.il"} . "\n"; OA> } OA> } OA> делаю OA> ./proga file.log OA> получаю: OA> Processing tnpp_out.log OA> 01051338 (some\@ema.il): 1 OA> 01051461 (some\@ema.il): 1 OA> 01051484 (some\@ema.il): 7 OA> 01051578 (some\@ema.il): 10 OA> 01051620 (some\@ema.il): 1 OA> 01051947 (some\@ema.il): 4 OA> Может все и правильно, но мне нужно отсортировать по значениям OA> (10,7,4,1,1,1)... Что делать? Подскажите, плиз!... Hе трогая структуры (хотя она меня как-то сомневает...) my %temp_hash; for my $val (keys %Hcaps) { $temp_hash{"$value (some\@ema.il)"} = $Hcaps{$value}{"some\@ema.il"} if exists $Hcaps{$value}{"some\@ema.il"}; } for my $key (sort { $temp_hash{$b} <=> $temp_hash{$a} } keys $temp_hash) { print $key.": ".$temp_hash{$key}."\n"; } Если у тебя обязательно у каждого ключа есть значение для "some\@ema.il", а if exists у тебя только оттого, что ты не то сортируешь, то два цикла можно свести в один. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/14454bee89b58.html, оценка из 5, голосов 10
|