Thread CSV Datei als Hash aufbauen (4 answers)
Opened by PETER_PAN2009 at 2011-04-19 16:58

topeg
 2011-04-19 17:38
#147863 #147863
User since
2006-07-10
2611 articles
BenutzerIn

user image
2011-04-19T14:58:29 PETER_PAN2009
Code (perl): (dl )
my %hash = map { $inhalt[0] => 1 } @inhalt;

Der Code erzeugt in %hash nur Name => 1. Ich vermute mal das ist nicht das was du willst.

Hier ein Beispiel wie man es machen kann:
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
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;

my $file='namen.csv';

open(my $fh, '<', $file) or die("ERROR open $file ($!)\n");

my $csv = Text::CSV->new ();

# first line
my $key_names=$csv->getline( $fh );

# Array of hashes
my @data;

# read File
while( my $row = $csv->getline( $fh ) )
{
  my $value={};
  $value->{$key_names->[$_]}=$row->[$_] for(0..$#$key_names);
  push(@data,$value);
}

# Formated Output
use Data::Dumper;
print Dumper(\@data);


Die Ausgabe ist der Art:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
$VAR1 = [
{
'Vorname' => 'Peter',
'Alter' => '56',
'Name' => 'Meyer'
},
{
'Vorname' => 'Andre',
'Alter' => '74',
'Name' => 'Schmidt'
}
];

Was, wie ich denke, deiner Vorstellung entspricht.

View full thread CSV Datei als Hash aufbauen