D'après.+(roman|pièce|nouvelle|opéra)?.*(\"(.*?)\")?+.*
внимательно рассмотрим ваш RegExp
после того как вы сделали слово "роман" (или его аналоги) а также само название необязательными greedy выражение .+ (которое идет впереди всего regexp-а) захватывает слово "роман" а также его название под себя, соотвтетственно в параметрах вы ничего не получаете.
напомню:
| Anjey aka PM |
| В данном случае они использованы в качестве ограничителей выражения (для чего обычно используют "/"). ~ в данном конкретном случае удобнее, т.к. разрешает не экранировать / в самом регулярном выражении а вообще русский перевод perldoc perlre вам пригодится |
читать до полного понимания!!!!!!