Thread Daten "Hashen"?
(14 answers)
Opened by gmafx at 2010-11-25 22:39
Das hier funktioniert bei mir:
Code (perl): (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 30 31 32 #!/usr/bin/perl use strict; use warnings; my %elements = (); my $input = $ARGV[0]; my $cnt=0; open (my $fh, '<', $input) or die("ERROR open $input ($!)\n"); while(my $line=<$fh>) { chomp($line); my ($id,@words) = split /\s+/, $line; #füge dem hasheintrag "$elements{$id}", # welches ein Array ist (siehe Autovivikation), # einen weiteren Eintrag hinzu, # der das Array "@words" ist. push(@{$elements{$id}},\@words); $cnt++; if ($cnt % 1000000 == 0) {print "read another 1000000 lines!\n";} } close($fh); while( my ($k, $v) = each %elements ) { print "key: $k\n"; for my $i ( 0 .. $#{$v} ) { print " cols $i: ". join( ', ', @{ $v->[$i] } ) ."\n"; } } Daten: Code: (dl
)
1 id1 test1a test1b test1c Ausgabe: Code: (dl
)
1 key: id1 Es kommt intern eine Struktur der Art heraus: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 %elements=( 'id1' => [ [ 'test1a', 'test1b', 'test1c' ], [ 'test1d', 'test1e', 'test1f' ], [ 'test1g', 'test1h', 'test1i' ], ], 'id2' => [ [ 'test2a', 'test2b', 'test2c' ], [ 'test2d', 'test2e', 'test2f' ], [ 'test2g', 'test2h', 'test2i' ], ], 'id3' => [ [ 'test3a', 'test3b', 'test3c' ], [ 'test3d', 'test3e', 'test3f' ], [ 'test3g', 'test3h', 'test3i' ], ], 'id4' => [ [ 'test4a', 'test4b', 'test4c' ], [ 'test4d', 'test4e', 'test4f' ], [ 'test4g', 'test4h', 'test4i' ], ], ); |