Я сопровождающий этого пакета.
HTML :: Query предоставляет волшебство селектора в дополнение к возможностям синтаксического анализа, предоставляемым HTML :: Tree. HTML :: Query сам по себе не обеспечивает синтаксического анализа. Ваша проблема с HTML :: Tree, а не с HTML :: Query.
HTML: Дерево в значительной степени предшествует соответствию спецификации. Первоначально он был создан еще тогда, когда IE управлял интернетом (1999) и обрабатывает HTML, основываясь на использовании «реального мира». Он довольно неплохо справляется с обработкой документов HTML 4, но, как вы заметили, есть проблемы с нетрадиционной разметкой, которая в HTML 4 является иным образом допустимой. Для обработки этих крайних случаев нет средств, библиотека не может и не будет их обрабатывать, так как Есть тысячи организаций, которые полагаются на существующую реализацию, чтобы продолжать работать в том виде, в каком она была.
HTML :: Tree неправильно поддерживает HTML5. Автор базовой библиотеки HTML :: TagSet отказывается ее поддерживать и спорит с (или игнорирует) любого, кто предлагает решение или предлагает принять библиотеку. Эта позиция эффективно препятствует ВСЕМ производным проектам правильно обрабатывать HTML5 - HTML :: Query и CSS :: Inliner не являются исключением.
Что касается предложения использовать HTML :: HTML5 :: Parser или «любые другие модули Perl, которые предоставляют HTML-анализатор» - я приветствую исправления. При этом: не существует достаточно поддерживаемых библиотек Perl, которые бы отображали, что сделал HTML :: Tree, поэтому любая такая попытка может потерпеть неудачу, но давайте посмотрим, что вы можете придумать.