http://www.perlmonks.org?node_id=1229249


in reply to Re: TWig handler generation -- dispatch table
in thread TWig handler generation

Hello again Discipulus and thanks again for your help here the code that I try below

my ($elements) = @_; my $del_handler = sub { $_->delete()}; my @all_element = @{$elements}; my %test; foreach $element(@all_element){ $test{$element}= \&del_handler; } open my $file_end, '>', $file_to_read.'-parsed_'.$dateLog.'.xml'; my $twig = new XML::Twig( twig_handlers => {\%test, _default_ => sub { $_[0]->flush($file_end)}} +); $twig->parsefile($file_to_read); close $file_end;

And here the errors

Delete Node1 unrecognized expression in handler: 'CODE(0x2bc12e8)' at C:\Users\doc\ +test_file_other.pl line 125.

Replies are listed 'Best First'.
Re^3: TWig handler generation -- dispatch table
by poj (Abbot) on Feb 01, 2019 at 19:41 UTC

    It helps if you post a complete runnable script

    #!/usr/bin/perl use strict; use warnings; use XML::Twig; use Time::Piece; my $file_to_read = 'input.xml'; my @elements_to_treat = qw(node1 node2 node3); delete_node(\@elements_to_treat); sub delete_node { my ($all_elements) = @_; my %handlers; for my $element (@$all_elements){ $handlers{$element} = sub { $_->delete() }; } my $dateLog = localtime->ymd('_'); my $file_to_write = $file_to_read.'-parsed_'.$dateLog.'.xml'; open my $fh_out, '>', $file_to_write or die "Could not open $file_to_write : $!"; $handlers{ '_default_' } = sub { $_[0]->flush($fh_out) }; my $twig = new XML::Twig( twig_handlers => \%handlers, pretty_print => 'indented', ); $twig->parsefile($file_to_read); close $fh_out; print "Created $file_to_write\n"; }
    poj

      THanks a lot, it works perfectly!