umlautproblem

06/10/2009 - 20:02 von Gerhard Wolf | Report spam
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à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";
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;
}
 

Lesen sie die antworten

#1 Frank Seitz
06/10/2009 - 20:21 | Warnen spam
Gerhard Wolf wrote:

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?



Warum glaubst du, hat es was mit dem Umlaut zu tun, dass dein Programm
nicht funktioniert? Mir sieht es eher danach aus, dass es am Newline liegt.

Grüße
Frank
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Ähnliche fragen