use strict; use warnings; use Text::Balanced qw(extract_tagged); my $str = ' word2 word3 word4 word5 word6 word7 word8 word9 word10'; # this leads to errors # my $str = 'BEFORE word2 word3 word4 word5 word6 word7 word8 word9 word10 AFTER'; my @res = extract_tagged( $str , '', ''); foreach (qw(extracted remainder prefix opening included closing)){ my $res = shift @res // 'NA'; print "$_:\t$res\n"; } __END__ extracted: word2 word3 word4 word5 remainder: word6 word7 word8 word9 word10 prefix: opening: included: word2 word3 word4 word5 closing: