Ich fange erstmal mit einlesen ein bevor ich die überprüfungen mache
Also ich habe eine CSV-Input Datei, das wie folg aussieht
Input.csv:
12;;654;Test;12345;Test
13;;265;Test;12345;Test
Mapping_CSV: ! ist dafür da, da die Stelle 2 in der Input_Datei leer ist.
Stelle Ziel_Stelle Laenge Typ
1 1 5 Numerisch
! 2 6 Numerisch
3 3 9 Numerisch
4 4 14 Alphanumerisch
5 5 5 Numerisch
6 6 28 Alphanumerisch
7 7 14 Alphanumerisch
Als Output erhalte ich nicht, was ich in Input hatte
Meine Output csv: Das verschiebst sich alles
12;2654; Test;Test Str:1;12345;Test
;;13;26542;;Test;Test Str:2;12345;Test
;;14;264624;;Test;Test Str:3;12345;Test
Also ich habe eine CSV-Input Datei, das wie folg aussieht
Input.csv:
12;;654;Test;12345;Test
13;;265;Test;12345;Test
Mapping_CSV: ! ist dafür da, da die Stelle 2 in der Input_Datei leer ist.
Stelle Ziel_Stelle Laenge Typ
1 1 5 Numerisch
! 2 6 Numerisch
3 3 9 Numerisch
4 4 14 Alphanumerisch
5 5 5 Numerisch
6 6 28 Alphanumerisch
7 7 14 Alphanumerisch
Code:
#!C:/Programme/Perl
use strict;
my $input='Input.csv';
my $output='Output.csv';
my $mapping='Input_mapping.csv';
my $zeileDaten;
my @arrayDaten;
my $inputDaten;
my @inputarray;
my $semikolon=';';
open MAPPING, "<$mapping" or die "Datei $mapping konnte nicht geöffnet werden";
open INPUT, "<$input" or die "Datei $input konnte nicht geöffnet werden";
open Output, ">$output" or die "Datei $output konnte nicht geöffnet werden";
while (<MAPPING>){
chomp;
#print "$_\n";
$zeileDaten ="$_\n";
push(@arrayDaten,$zeileDaten);
}
close(MAPPING);
while (<INPUT>){
chomp;
$inputDaten ="$_\n";
@inputarray=split(/;/,$inputDaten);
foreach $mapping( @arrayDaten ) {
my ($Stelle, $ZielStelle,$Laenge, $Typ) = split(/;/,$mapping);
if ($Stelle eq "!"){
print Output "$semikolon";
} else {
print Output "@inputarray[$Stelle]$semikolon";
print "@inputarray[$Stelle]$semikolon";
}
}
}
close(INPUT);
Meine Output csv: Das verschiebst sich alles
12;2654; Test;Test Str:1;12345;Test
;;13;26542;;Test;Test Str:2;12345;Test
;;14;264624;;Test;Test Str:3;12345;Test
Zuletzt bearbeitet: