#!C:/Programme/Perl use strict; use warnings; my @mappingDaten = ( '0 0 5 Numerisch' , '1 1 6 Numerisch' , '2 2 9 Numerisch' , '3 3 14 Alphanumerisch' , '4 4 5 Numerisch' , '5 5 28 Alphanumerisch' # , '6 6 14 Alphanumerisch' es sind nur 6 Stellen! ); while (my $inputDaten = ){ chomp $inputDaten; my @inputarray = split /;/, $inputDaten; my @outputarray; foreach my $mapping (@mappingDaten) { my ($Stelle, $ZielStelle, $Laenge, $Typ) = split(/ /,$mapping); if ($Typ eq 'Numerisch') { $outputarray[$ZielStelle] = sprintf("%0" . $Laenge . "d", ($inputarray[$Stelle] or 0)); } elsif ($Typ eq 'Alphanumerisch') { $outputarray[$ZielStelle] = sprintf("% " . $Laenge . "s", ($inputarray[$Stelle] or '')); } } print join (";", @outputarray) . "\n"; } __DATA__ 12;;654;Test;12345;Test 13;;265;Test;12345;Test