Заменяет ли XML::LibXML::Node replaceNode() экземпляры Perl замененного узла

... так что после замены a на b все предыдущие ссылки на a теперь указывают на b?


person ZzZombo    schedule 08.11.2016    source источник
comment
Сиськи = Попробуй, чтобы увидеть!   -  person choroba    schedule 08.11.2016


Ответы (1)


#!/usr/bin/perl
use warnings;
use strict;

use XML::LibXML;

my $dom = 'XML::LibXML'->load_xml(string => '<r><p><c/></p></r>');
my ($n1) = $dom->findnodes('/r/p/c');
my ($n2) = $dom->findnodes('/r/p/c');
$n1->replaceNode('XML::LibXML::Element'->new('n'));
print $dom;
print $n1, $n2;

Выход:

<?xml version="1.0"?>
<r><p><n/></p></r>
<c/><c/>
person choroba    schedule 08.11.2016
comment
Почему у вас есть кавычки вокруг имен пакетов? - person simbabque; 08.11.2016
comment
@simbabque: потому что perlmonks.org/?node_id=980498 и ::-> слишком уродливы, чтобы печатать . - person choroba; 08.11.2016
comment
@simbabque, они защищают себя от отдаленной возможности того, что есть подпрограмма под названием XML::LibXML. Perl фактически позволяет вам использовать XML::LibXML:: для решения этой проблемы. - person ikegami; 08.11.2016