Hallo,
auf Grund verschiedener Ärgernisse beim händischen Parsen von CSV-Dateien unter Windows bin ich auf Text::CSV gekommen. Ich muss aber sagen, dass das Modul einige Sonderbarkeiten bietet. Einmal ist mir die Anwendung schon gelungen. Das zweite Mal stehe ich kurz davor meinen Rechner aus dem Fenster zu schmeißen.
Relevanter Code:
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
!c:\Perl64\bin\perl.exe -w
use strict;
use diagnostics;
use Text::CSV;
my $testfilelist="testfilelist.csv";
my %dimconvtables;
loadlevelconversion($testfilelist, \%dimconvtables);
exit 0;
sub loadlevelconversion
{
my $listfilename=shift;
my $tableref=shift;
my $locdata;
local $/='\r';
my $ncsv = Text::CSV->new ( {sep_char => ';', eol => $/} );
$ncsv->SetDiag(0);
open my ($ifl), "<", $listfilename or die "Could not open $listfilename! \n$!\n";
if ($ncsv->eof()) {print "eof1"};
$locdata=$ncsv->getline($ifl);
print $locdata;
close $ifl;
return;
}
geladen wird eine CSV-Datei mit CR als Umbruch und semikolon als Spaltentrenner. Aller Text ist ASCII.
Als einzigen Output bringt das Programm einen "uninitialized value" beim print $locdata. (Ich weiß, dass ich eine Refernz auszugeben versuche, aber nicht mal die bekomme ich).
Es gibt auch sonst keine Fehler usw.
Wer hat hier eine blasse Ahnung, was da abgeht?
Ach ja:
Windows 7
Strawberry
v.5.14.2