Struppi: Zweidimensionales Hash sortieren

Beitrag lesen

Hallo Schnaps

Hallo zusammen

ich habe hier ein zweidimensionales Hash das so aussieht.

$neu_alignment{'name1'}{'0'}=a
$neu_alignment{'name2'}{'0'}=c
$neu_alignment{'name3'}{'0'}=-
$neu_alignment{'name4'}{'0'}=-
$neu_alignment{'anzahl'}{'0'}=1

Deine Datenstruktur ist sehr fragwürdig.

Wenn du name1 bis name4 hast klingt das doch stark nach einem Array und der 2. Schlüssel sowieso. 0, 1, 2 das ist ein Array.

Vielleicht wäre alle einfacher, wenn du die Struktur sinnvoll änderst.

#!/usr/bin/perl -w

use strict;
use Data::Dumper;

my $alignment = [
{
  name1 => 'a',
  name2 => 'c',
  name3 => '-',
  name4 => '-',
  anzahl => 1
},
{
  name1 => 'a',
  name2 => 'a',
  name3 => 'a',
  name4 => 'a',
  anzahl => 4
},
{
  name1 => 'a',
  name2 => 'b',
  name3 => 'b',
  name4 => 't',
  anzahl => 2
}
];
use Data::Dumper;

foreach( reverse sort { $a->{anzahl} <=> $b->{anzahl} } @$alignment)
{
   print Dumper $_;
}

Struppi.