my $attributes = $sibling_element->atts(); $attributes->{'#CDATA'} = 1; # '#CDATA' attribute is defined here my $elt1 = XML::Twig::Elt->new('present', $attributes, 'This is in CDATA'); # '#CDATA' attribute is undefined here my $elt2 = XML::Twig::Elt->new('missing', $attributes, 'This is not in CDATA'); #### perl -v This is perl 5, version 26, subversion 0 (v5.26.0) built for MSWin32-x64-multi-thread #### #!/usr/bin/perl use 5.026; use strict; use warnings; use XML::Twig; { open (my $OFILE, '>:utf8', 'file.out.xml') or die "$!\n$^E"; my $t = XML::Twig->new( twig_handlers => { '/keys/key' => sub { makeDuplicates(@_, $OFILE); 1; }, }, output_encoding => 'utf-8', pretty_print => 'indented', ); $t->safe_parse(\*DATA); if ( $@ ) { die "Error occured in XML data\n$@"; } close $OFILE; } sub makeDuplicates { my ($_twig, $key_element, $OFILE) = @_; my $text = $key_element->text(); my $attributes = $key_element->atts(); $attributes->{'#CDATA'} = 1; # '#CDATA' attribute is defined here my $lc_element = XML::Twig::Elt->new('lc_key', $attributes, lc $text); # '#CDATA' attribute is undefined here my $uc_element = XML::Twig::Elt->new('uc_key', $attributes, uc $text); $lc_element->paste(after => $key_element); $uc_element->paste(after => $key_element); $_twig->flush($OFILE); return; } __DATA__ #### #### ONE HEN TWO DUCKS THREE SQUAWKING GEESE FOUR LIMERICK OYSTERS FIVE CORPULENT PORPOISES SIX PAIR OF DON ALVERZO'S TWEEZERS SEVEN THOUSAND MACEDONIANS IN FULL BATTLE ARRAY EIGHT BRASS MONKEYS FROM THE ANCIENT SACRED CRYPTS OF EGYPT NINE APATHETIC, SYMPATHETIC, DIABETIC OLD MEN ON ROLLER SKATES, WITH A MARKED PROPENSITY TOWARDS PROCRASTINATION AND SLOTH TEN LYRICAL, SPHERICAL, DIABOLICAL DENIZENS OF THE DEEP WHO STALK ABOUT THE CORNERS OF THE COVE ALL AT THE SAME TIME.