my $PREFIX = qr/^\s*\d{1,3}[.]\s+/; my $NOM = qr/[\w-]+/; my $PDF = qr/\S+[.]pdf/; # ne peut pas être [.]pdf[.,] my $COMMENT = qr/.+(?!$PDF[,.])/; # Trop gourmande (pas mieux que «.+» ) foreach my $package ( @paragraphes ) { ### $package; my ( $nom, $comment, @pdf ) = $package =~ m{ $PREFIX ($NOM): \s* ($COMMENT) # tout ce qui n'est pas suivi d'un «mot.pdf» TODO \s* (\s # début de $3 (?:$PDF)+ # regroupement non capturant (pluriel ineficace) ) # fin de $3 \s*[.,]\s*\z }xms; say "nom: $nom"; say "comment: $comment"; print Dumper(@pdf); }