Thread Sortieralgorithmus: (war: Sortieralgorythmus) (11 answers)
Opened by Jamthelaw at 2005-10-20 19:59

Jamthelaw
 2005-10-25 04:03
#59073 #59073
User since
2005-08-16
9 Artikel
BenutzerIn
[default_avatar]
Jetzt bin ich auf das nächste Problem gestossen...

Wenn ich dem Hash %daten den Inhalt "manuell" zuweise funktioniert das ganze.

Wenn ich jedoch die Daten aus einer Datei auslese funktioniert es nicht...

Die Datei sieht so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
Gruppe1
PC1
PC2
PC3

Gruppe2
PC2
PC4
PC5

Gruppe3
PC1
PC6


Der Code um die Datei auszulesen und die Daten in den Hash zu schreiben:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use Data::Dumper;
use strict;

my @computer = "";
my $gruppen;
my %daten;
my $key;
my $i = 0;

open (INFILE, 'list.txt') or die "Could not open infile !!!";

while(<INFILE>){
chomp $_;
if($_ =~ /Gruppe/){
if($i == 0){
$gruppen = $_;
}
else{
$daten{$gruppen} = [@computer];
@computer = "";
$gruppen = $_;
}
}
else{
push @computer, $_;
}
$i++;
}
$daten{$gruppen} = [@computer];


...und wenn ich hiermit die Daten umordne...

Code: (dl )
1
2
3
4
5
6
my %data2;
while (my ($gruppe, $pcs) = each %daten) {
push @{$data2{$_}}, $gruppe for @$pcs;
}

print Dumper \%data2;


erhalte ich diese Ausgabe:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$VAR1 = {
'PC1' => [
'Gruppe3',
'Gruppe1'
],
'' => [
'Gruppe3',
'Gruppe1',
'Gruppe1',
'Gruppe2',
'Gruppe2'
],
'PC3' => [
'Gruppe1'
],
'PC4' => [
'Gruppe2'
],
'PC2' => [
'Gruppe1',
'Gruppe2'
],
'PC6' => [
'Gruppe3'
],
'PC5' => [
'Gruppe2'
]
};


Es scheint ein kleiner Fehler beim Auslesen zu passieren, da ich einen Array zuviel habe, aber ich finde den Fehler nicht....

Thx schonmal für eure Hilfe

Grüsse,
Jamthelaw\n\n

<!--EDIT|Jamthelaw|1130199764-->

View full thread Sortieralgorithmus: (war: Sortieralgorythmus)