use strict; use warnings; my $str = '6AG3_608_FGG_20100124_20120923418_20126254447_201262512026.txt'; $str =~ m/(.*?)(_\d{11,}?.*)(\.\w+)/; print $1, "\n"; print $2, "\n"; print $3, "\n";