umlautproblem
Von: Gerhard Wolf (quisquiliae@gmx.de) [Profil]
Datum: 06.10.2009 20:02
Message-ID: <7j1f13F32h5unU1@mid.individual.net>
Newsgroup: de.comp.lang.perl.misc
Datum: 06.10.2009 20:02
Message-ID: <7j1f13F32h5unU1@mid.individual.net>
Newsgroup: de.comp.lang.perl.misc
Hallo,
ich hab eine Variable definiert, die einen Umlaut enthält:
my $valid_header = "Geschäftsvorfall";
beim Einlesen aus einer Datei will ich herausfinden ob eine Zeile
bestehend aus dem String "Geschäftsvorfall" existiert.
Obwohl Zeilen mit dem String existieren wird kein Treffer gefunden.
Eigentlich müsste gleich Zeile 1 (CSV-Header) einen Treffel landen aber
$_ ne $valid_header versagt hier obwohl beim debuggen $_ den umlaut
korrekt anzeigt.
Wo liegt das problem? Was kann ich tun?
anbei das script:
#!/usr/bin/perl -w
use strict;
use warnings;
my $file;
my $ksk_data = "/blabla/bla/daten";
my $download_data = "/home/gewo/Desktop";
my @files = glob( $download_data . "/*.csv" );
my $valid_header
=
"\"Kontonummer\";\"Datum\";\"Valuta\";\"Gesch&Atil
de;¤ftsvorfall\";
\"Verwendungszweck\";\"Betrag\";\"Name\";\"Konto\"
;\"BLZ\"";
for $file (@files) {
merge_files($ksk_data."/ziel.csv",$file );
}
sub merge_files {
my ($target,$source) = @_;
my %csvline;
my $lcount = 0;
my $header = "";
my $files;
open my $CSV, '<', $source or die $!;
while (<$CSV>) {
if ( $lcount == 0 ) {
if ( $_ ne $valid_header ) {
print $file. " hat einen anderen Aufbau\n";
return -1;
}
}
}
close $CSV or die $!;
unlink $target;
open my $MERGED, '>', $target or die $!;
print $MERGED $header;
while ( my ( $key, $value ) = each(%csvline) ) {
if ( $key ne $header ) {
print $MERGED $key;
}
$lcount++;
}
close $MERGED;
return $lcount;
}
[ Auf dieses Posting antworten ]Antworten
- Frank Seitz (06.10.2009 20:21)
- Gerhard Wolf (06.10.2009 21:38)
- Frank Seitz (06.10.2009 23:24)
- Jens Mander (nein, nicht wirklich) (10.10.2009 20:02)
- Wolf Behrenhoff (06.10.2009 21:50)
- Gerhard Wolf (06.10.2009 22:41)
- David Haller (07.10.2009 06:07)
- Jens Mander (nein, nicht wirklich) (10.10.2009 20:21)
