in reply to xpath invalid expression

quote or escape $t , so your xpath doesn't break

{ my %rep = qw{ " " ' ' } ; sub quote_xpath { my( $t ) = @_; $t =~ s/(['"])/ $rep{$1} /ge; return $t; } }

See also xpath resources 1, xpath resources 2, http://www.w3.org/TR/xpath/