#!/usr/bin/perl
use strict;
use warnings;
use XML::Parser;
my $size= 500000;
my @base64_chars=('a'..'z','A'..'Z','0'..'9','+','/','=');
my $string= join( '', map { $base64_chars[rand(@base64_chars)] }(1..$size));
my $doc= qq{
foo
$string
$string
bar
};
my $p= XML::Parser->new( Handlers => { Char => \&char, });
$p->parse( $doc);
exit;
sub char
{ my( $expat, $char)= @_;
print "in ", $expat->current_element, " - ",
"length char: ", length( $char), " - ",
"length recognized: ", length( $expat->recognized_string), " - ",
"length original: ", length( $expat->original_string), "\n",
;
}
####
#!/usr/bin/perl
use strict;
use warnings;
use XML::Parser;
use Fatal qw(open);
my $line_size= 100000;
my $nb_lines= 5;
my @base64_chars=('a'..'z','A'..'Z','0'..'9','+','/','=');
my $line= join( '', map { $base64_chars[rand(@base64_chars)] }(1..$line_size));
$line.= "\n";
my $string= $line x $nb_lines;
my( $long1_length, $long2_length);
my $doc= qq{foo$string$stringbar};
open( my $xml, '>', "$0.xml");
print {$xml} $doc;
close $xml;
my $p= XML::Parser->new( Handlers => { Char => \&char, });
$p->parsefile( "$0.xml");
print "long1: $long1_length\n";
print "long2: $long2_length\n";
exit;
sub char
{ my( $expat, $char)= @_;
print "in ", $expat->current_element, " - ",
"length char: ", length( $char), " - ",
"length recognized: ", length( $expat->recognized_string), " - ",
"length original: ", length( $expat->original_string), "\n",
;
if( $expat->in_element( 'long1')) { $long1_length+= length( $char); }
if( $expat->in_element( 'long2')) { $long2_length+= length( $char); }
}