Thread CSV-Import mit Text::CSV (16 answers)
Opened by jan99 at 2015-08-31 13:13

jan99
 2015-08-31 13:13
#181944 #181944
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
Moin !

ich möchte CSV-Daten (Trennung ;) mit Text::CSV importieren.

Meine Daten sehen wie folgt aus:
Code: (dl )
1
2
3
4
UID;type;No;ACAD;PRÜFEN;EXTERN;MIGRATION;DM;LISP;VBA;UTM;Bemerkungen;Björn prfen;Stellberg;EBL_ERFASSUNG;PRIO;Name;Command;SmallImage;LargeImage;BJ_TBLOGOUT
ID_02;Any;;;;;x;;;x;;;;;;;Zoom auf Straße und Hausnummer;"^C^C(C:BJ_TBLOGOUT);-vbarun BJ__POSFIND STR_HSNR EBL_KANAL";ICBJ0162;ICBJ0162;
ID_03;Any;;;;;x;;;x;;;;;;;Zoom auf Gemarkung/Flur/Flurstück;"^C^C(C:BJ_TBLOGOUT);-vbarun BJ__POSFIND GEM_F_FL ALK";ICBJ0161;ICBJ0161;
ID_04;Any;;;;;x;x;;x;;;;;;;Bildaufbau - Sielkataster/ALK;"^C^C(C:BJ_TBLOGOUT);-vbarun BJ__TBWSC_1 80 ""NULL"" ""EBL_KANAL"" ""LAYER_ALK_AW""";ICBJ0331;ICBJ0331;


und der Code ist:
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
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV;

my $file='MenuGroup_bereinigt.csv';
my $s_delimiter = ";";

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

my $csv = Text::CSV->new({sep_char => "$s_delimiter"});
#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);


(stammt aus einem Beispiel und wurde nur um das Trennzeichen erweitert.

Wenn ich das ausführe kommt nur folgendes im CMD-Fenster raus:
Quote
C:\Perl-Tools\mnu_auslesen>perl csv2perl.pl
$VAR1 = [];

C:\Perl-Tools\mnu_auslesen>pause
Drücken Sie eine beliebige Taste . . .


Kann mir einer weiterhelfen?

Gruß Jan
Last edited: 2015-08-31 14:12:48 +0200 (CEST)
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread CSV-Import mit Text::CSV