my $didit=/^ a # literal a \s* # optional whitespace ((?: $re \s* )+) (.*) # something 42 # literal 42 $/x; print Dumper [$_, $didit?($1,$2):(undef,undef), $didit];