Alice
40000
Bob
37500
####
{
package MegaCorp::Person;
use XML::LibXML::Augment
-names => ['{http://megacorp.example/}person'];
sub get_salary {
shift
-> getElementsByTagName('salary')
-> get_node(1) # not zero-indexed!
-> textContent;
}
sub get_bank_account {
shift
-> getElementsByTagName('bank_account')
-> get_node(1);
}
sub pay_salary {
my $self = shift;
my $acct = $self->get_bank_account;
$acct->accept_funds($self->get_salary);
}
}
{
package MegaCorp::BankAccount;
use XML::LibXML::Augment
-names => ['{http://megacorp.example/}bank_account'];
sub accept_funds {
...
}
}
{
package main;
use XML::LibXML::Augment;
my $doc = XML::LibXML->load_xml(location => 'emp.xml');
# Switch on augmentation for this document!
XML::LibXML::Augment->upgrade($doc);
my @employees = $doc->getElementsByTagName('person');
$_->pay_salary for @employees;
}