c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "my $s = 'firstname1:::surname1:::middlename1:::firstname2:::surname2:::middlename2:::firstname3:::surname3:::middlename3'; ;; my $match = my @ra = $s =~ m{ \G ([^:]+ (?: ::: [^:]+){2}) (?: ::: | \z) }xmsg; ;; die 'no match' unless $match; dd \@ra; " [ "firstname1:::surname1:::middlename1", "firstname2:::surname2:::middlename2", "firstname3:::surname3:::middlename3", ]