my @ff = qw/ NaFlorian_Da20050301_Nr025_PfTestpfad.txt NaFlorian_Nr025_PfTestpfad.txt /; # fuer jeden Dateinamen for ( @ff ) { m{ ^ # Stringanfang ([^_]+) # Wort bis zum ersten _ einfangen (?: # gruppierende Klammer _(Da[^_]+) # moegliches Da... einfangen )? # das gruppierte kann einmal oder gar nicht auftauchen _ ([^_]+) # Nr... einfangen _ ([^_]+) # Pfad einfangen \. # echter Punkt .* # Dateiendung $ # Stringende }x; # RegEx Ende print "$1," . ($2 ? $2 : ' ' ) . ",$3,$4", $/; }