##
вставляет два токена вместе в один токен.
#define poem(var)\
int jack##var;
// Produces 'int jacksprat;'
poem(sprat)
В вашем случае вам не нужно делать ничего особенного, вы можете просто использовать аргумент напрямую:
#define MY_MACRO(var)\
int var;
XML:: XPath основан на XML:: Синтаксический анализатор. В XML существует опция:: Синтаксический анализатор для НЕ использования LWP для разрешения внешних объектов (таких как ДАТЫ). И XML:: XPath позволяет Вам передать XML:: Синтаксический анализатор objetc, для использования в качестве синтаксического анализатора.
Таким образом, можно записать это:
my $p = XML::Parser->new( NoLWP => 1);
my $xp= XML::XPath->new( parser => $p, filename => "a.xhtml");
Обратите внимание в этом случае выпуск всех объектов кроме числовых и по умолчанию (>, <и, 'и"). Синтаксический анализатор не будет жаловаться, но они исчезнут тихо (попробуйте включая α в таблице и печати его, например).
На самом деле, Вы, вероятно, не должны использовать XML:: XPath, который активно не сохраняется.
Попробуйте XML:: LibXML, если у Вас нет проблемы с установкой libxml2, ее интерфейс, очень похож на XML:: XPath, поскольку они оба реализуют DOM. XML:: LibXML также намного более мощен, чем XML:: XPath, и быстрее загружаться. Если Вы хотите expat/XML:: основанный на синтаксическом анализаторе модуль, они Вы могли бы хотеть взглянуть на XML:: Ветка (это - явная самореклама, поскольку я - автор модуля, извините). Также для HTML XHTML / изворотливый XHTML, можно использовать HTML:: TreeBuilder, который, с добавлением HTML:: TreeBuilder:: XPath (также мной), XPath поддержек.
Обычно это сделано путем установки локального каталога XML.
находящиеся в libxml синтаксические анализаторы поддерживают его, поэтому если Вы последуете совету mirod, то Вы сможете получить именованные сущности и работу проверки без доступа к сети.