use warnings; use strict; use File::Basename qw(fileparse); #Beispielnamen my @files = qw(123.txt foo123456789.txt bar123456789.tst.txt); for my $filename (@files) { # Dateinamen zerlegen (an der letzten Extension) my ($name, $dir, $ext) = fileparse($filename, qr/\.[^.]*/); if (length($name) > 8) { $name = substr($name, 0, 7) . '~'; } print "$filename => $name$ext\n"; }