Перенесли тут как-то перловый скриптик на другую машину. А он возьми да и сломайся. И пошёл я смотреть, отчего это. Ругался он при попытке распарсить XML-файл (да-да, тем самым XML::XPath->new(), про который был предыдущий пост) но ругался довольно странно:
error in processing external entity reference at line 2, column 58, byte 80:
<?xml version="1.0"?>
<!DOCTYPE DataAlertService SYSTEM "DataAlertService.dtd">
=======================================================^
Потратив всего каких-то полдня, я понял, что ругается он вовсе не на указанное место, и даже не на сам этот XML. А на DTD. Потратив ещё полдня, я понял, что на этой машине XML-парсер тупо не понимает parameter entities в DTD.
Это макросы типа <!ENTITY % id 'id CDATA #REQUIRED'>
, которые потом можно в том же DTD использовать: <!ATTLIST Official %id; ...
Вот на прежней древней солярке понимал, на моей десктопной убунте понимает, а на этой грёбанной CentOS (5.5, последний релиз, все дела) – не понимает. И после этого мне ещё будут рассказывать о прелестях этих ваших редхатов..
Оригинал этой записи. Комментировать можно тут или там.