$xNeTworKx: Hash lässt gleichwertige Schlüssel unter den Tisch fallen ?

Beitrag lesen

Hallo,

Ich habe doch vor einiger Zeit mal gefragt, wie ich am besten Einträge nach Datum sortieren kann. Es funktioniert so weit alles so wie es soll. Gestern wurde ich aber von einem meiner Besucher darauf aufmerksam gemacht, daß wenn man 2 Termine mit dem gleichen Datum postet, eines davon nicht angezeit wird. Ich habe bereits die Fehlerquelle gefunden. Es ist diese Zeile :

foreach my $key(sort {$a <=> $b} keys %hash)

Wie bringe ich es fertig, daß er ALLE Schlüssel mit gleichem Wert anzeigt und nicht nur den ersten, den er findet ?

sub showparty   {
my $flyerurl = shift;
my @array = ();
my $partycounter = 0;
my $in = '';
my %hash;
print <<EOF;
<div style="position:absolute; top:95px">
<table style="border:0px; width:700px">
<colgroup>
<col width="5%">
<col width="15%">
<col width="40%">
<col width="30%">
<col width="10%">
</colgroup>
EOF
    open(FILE,"$partydata") or die "Cant open database : $!\n";
    local $/;
    $in = <FILE>;
    close FILE;
       while ($in =~ /<party>(.+?)</party>/sg)  {
       my $termin = $1;
             if ($termin =~ /<wann>(\d{2}).(\d{2}).(\d{4})</wann>/sg)  {
             push @array, $3.$2.$1, $termin;
             }
       }
       %hash = @array;

foreach my $key(sort {$a <=> $b} keys %hash)  {

if ($ip eq "$admin" || $ip eq "$moderator")  {
           print "<tr><td><a href="$url?action=deleteparty&partycounter=$partycounter"><img src="pics/delete.png" alt="del"></a></td>";
           }  else  {
           print "<tr><td>   </td>";
           }
           if ($hash{$key} =~ /<wann>(.+?)</wann>/)   {
           print "<td class="orangeright">$1</td>";
           }
           if ($hash{$key} =~ /<soundsystem>(.+?)</soundsystem>/)   {
           print "<td class="orangemiddle">$1</td>";
           }
           if ($hash{$key} =~ /<info>(.+?)</info>/)   {
           print "<td class="orangeleft">$1</td>";
           }  else  {
            print "<td> &nbsp </td>";
           }
           if ($hash{$key} =~ /<flyer>(.+?)</flyer>/)   {
           print "<td><a href="$url?action=flyer&url=$1">Flyer</a></td></tr>\n";
           }  else  {
           print "<td> &nbsp </td></tr>\n";
           }
$partycounter++;
}

$xNeTworKx.