![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Markus, 28. 02. 2006, 17:58
Hallo,
ich habe folgenden Hash aus Namen, Zahlen definiert:
%ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);
Ich möchte nun eine Ausgabe absteigend sortiert nach Zahlen. Bei gleicher Zahl soll dann auch Namen sortiert werden.
@keys = sort{$ages{$b}<=>$ages{$a}} keys %ages;
foreach $key (@keys)
{
print "$key = $ages{$key}\n";
}
Ausgabe:
Rolf = 2
Michael = 1
Otto = 1
Erwin = 1
Uwe = 1
Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:
Ausgabe:
Rolf = 2
Erwin = 1
Michael = 1
Otto = 1
Uwe = 1
Danke im voraus!
Die folgende Nachricht zum Thema stammt von: Benne, 28. 02. 2006, 18:25
Hallo Markus,
»» Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:
mit einer simplen Oder Verknüpfung:@keys = sort{ $ages{$b} <=> $ages{$a}
|| $names{$a} <=> $names{$b} } keys %ages;
siehe auch sort bei perldoc
Gruß,
Benne
--
ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
Die folgende Nachricht zum Thema stammt von: Benne, 28. 02. 2006, 18:27
entschuldigt mich für den Fehler.@keys = sort{ $ages{$b} <=> $ages{$a}
|| $names{$a} cmp $names{$b} } keys %ages;
muss das natürlich heißen
Gruß,
Benne
--
ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
Die folgende Nachricht zum Thema stammt von: Markus, 28. 02. 2006, 21:00
hi Benne,
danke dir vielmals!
helau
markus
Die folgende Nachricht zum Thema stammt von: Markus, 01. 03. 2006, 00:29
Hi Benne,
ich habe dich zu früh gelobt. Es klappt leider nicht.
%ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);
@keys = sort{$ages{$b} <=> $ages{$a} || $names{$a} cmp $names{$b}} keys %ages;
foreach $key (@keys)
{
print "$key = $ages{$key}\n";
}
Der Output ist wieder:
Rolf = 2
Michael = 1
Otto = 1
Erwin = 1
Uwe = 1
Ich möchte aber diesen Output haben:
Rolf = 2
Erwin = 1
Michael = 1
Otto = 1
Uwe = 1
Bei gleichen Zahlen soll auch nach Name sortiert werden.
Weist du wo der Fehler ist?
Bye
Markus
Die folgende Nachricht zum Thema stammt von: Struppi, 01. 03. 2006, 08:42
»» Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:
»»
»» Ausgabe:
»» Rolf = 2
»» Erwin = 1
»» Michael = 1
»» Otto = 1
»» Uwe = 1
Ihr wart auf dem richtigen Weg:#!/usr/bin/perl -w
use strict;
my %ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);
my @keys = sort{ $ages{$b} <=> $ages{$a}
|| $a cmp $b } keys %ages;
foreach my $key (@keys)
{
print "$key = $ages{$key}\n";
}
Struppi.
--
Javascript ist toll
Die folgende Nachricht zum Thema stammt von: Markus, 01. 03. 2006, 12:11
Hi Struppi,
tausend Dank an den Profi. Es klappt.
© 1998-2006
Impressum, Software: Classic Forum