use strict; use warnings; sub sanitize_filename { my $filename = shift; return if not length $filename; my ($fname, $ftype) = # nur bestimmte Zeichen wie a..z,A..Z,0..9,_,- in Dateinamen erlaubt $filename =~ /(.+)?\.([a-z0-9_-]+)$/i;# $fname =~ s/[^a-z0-9_-]//ig; # lösche alle Zeichen die nicht erlaubt sind return "$fname.$ftype"; } for () { chomp; print "$_ -> ", sanitize_filename($_), "\n" ; } __DATA__ 1-läöpab.cd_efg.txt 1234.5678.9012.abcd.efgh.log µöüß\io(/&.exe ZuGuMzUg-De.r-dat.ei