#!/usr/bin/perl use warnings; use strict; my @data; my $columns = 5; open(FH,") { chomp $line; #entfernt \n my @array = (split(/[\t\s\\]/,$line))[0..($columns-1)]; # splitet nach taps, leerzeichen und backslash foreach (@array) { s/^\s+/;/g; # fuehrende und s/\s+$/;/g; # abschliessende Blanks (beides entfernen und durch ";" ersetzen) } # foreach push(@data,[@array]); } # while close (FH); my $format = ''; for my $i(0..scalar(@{$data[0]})-1) { #hier wird das format festgelegtund linksbuendig my $max = find_longest(map{$_->[$i]}@data); $format .= '%-'.$max.'s '; } # Ich verwende einen Skalar als Filehandle, # Du kannst aber statt $out_fh auch OUTDATEN # schreiben open(my $out_fh,'>','Ziel.txt') or die $!; for my $entry(@data) { print sprintf($format . "<<\n",@$entry); # Ausgabe auf Bildschirm print $out_fh sprintf($format . "<<\n",@$entry); # Ausgabe in Datei } close $out_fh or die $!; sub find_longest { # hier wird der laengste inhalt des feldes berechnet my $longest = 0; for(@_){ my $length = length($_); $longest = $length if($length > $longest); } return $longest; }