# in the real code '.' is my delimiter # Using 'X' above since it's not a regex metachar my $first = $1 if $name =~ m/^ ( [^\\.]* (?: \\(?:.|$) [^\\.]* )* ) /gx; my (@remainder) = $name =~ m/\G (?:\.) ( [^\\.]* (?: \\(?:.|$) [^\\.]* )* ) /gx;