#!/usr/bin/perl use warnings; use strict; my @data; my $columns   = 5; open(FH,") {                chomp $line;               my @array = (split(/[\t\s\\]/,$line))[0..($columns-1)];    foreach (@array) {      s/^\s+/;/g;                          s/\s+$/;/g;            } # foreach if ($line =~/\bBLUBB|SAND?\b/ and $line !~/\bMUSCHEL\b/){  push(@data,[@array]); } # if } # while close (FH); my $format = ''; for my $i(0..scalar(@{$data[0]})-1){          my $max = find_longest(map{$_->[$i]}@data);  $format .= '%-'.$max.'s '; } for my $entry(@data){  print sprintf($format . "\n",@$entry); }    open(OUTDATEN,">ZIEL.txt") or die $!;   for my $entry(@data) { print OUTDATEN join(';',@$entry),"50","\n"; } close (OUTDATEN) or die $!; sub find_longest{                            my $longest = 0;  for(@_){      my $length = length($_);      $longest = $length if($length > $longest);  } return $longest; }