Okay, was tinkering with the code below but the zero-width lookahead is not 
disqualifying ampersand followed by #x[0-9A-F]{4}; so the output is bogus (you 
can run this and see what I mean).

What am I doing wrong?



#!/usr/bin/perl -w

use warnings;
use strict;

my $data = <<__EOF__;
Th&#x0435; R&#x0435;&#x0430;l R&#x0435;&#x0430;&#x0455;&#x043E;nTh&#x0435; 
&#x13DF;&#x043E;m&#x0456;ng 
&#x13DF;&#x043E;ll&#x0430;&#x0440;&#x0455;&#x0435;...Th&#x0435; 
r&#x0435;&#x0430;l r&#x0435;&#x0430;&#x0455;&#x043E;n &#x13B3;HY 
H&#x043E;m&#x0435;l&#x0430;ndS&#x0435;cur&#x0456;t&#x0443; 
r&#x0435;c&#x0435;ntl&#x0443; &#x0440;urch&#x0430;&#x0455;&#x0435;d1.7 
B&#x0456;ll&#x0456;&#x043E;n R&#x043E;und&#x0455; &#x043E;f 
&#x0430;mmun&#x0456;t&#x0456;&#x043E;n...&#x13B3;h&#x0430;t Y&#x043E;u 
Mu&#x0455;t D&#x043E; T&#x043E; &#x13AC;n&#x0455;ur&#x0435; 
Y&#x043E;urS&#x0430;f&#x0435;t&#x0443;H&#x043E;m&#x0435;l&#x0430;nd 
&#x0455;&#x0435;cur&#x0456;t&#x0443; &#x0456;&#x0455; th&#x0435;r&#x0435; 
t&#x043E; &#x0455;&#x0435;cur&#x0435;th&#x0435; h&#x043E;m&#x0435;l&#x0430;nd 
&#x043E;nl&#x0443;... S&#x043E; th&#x0435;&#x0455;&#x0435; 
&#x042C;ull&#x0435;t&#x0455;&#x0430;r&#x0435; r&#x0435;&#x0430;l&#x0443; 
m&#x0435;&#x0430;nt f&#x043E;r th&#x0435;Th&#x0456;&#x0455; &#x0456;&#x0455; 
&#x0430;n 
&#x0435;m&#x0430;&#x0456;l&#x0430;dv&#x0435;rt&#x0456;&#x0455;&#x0435;m&#x0435;nt
 th&#x0430;t w&#x0430;&#x0455; &#x0455;&#x0435;nt t&#x043E; &#x0443;&#x043E;u 
&#x042C;&#x0443; &#x03A1;&#x0430;tr&#x0456;&#x043E;t Surv&#x0456;v&#x0430;l 
&#x03A1;l&#x0430;n. If &#x0443;&#x043E;uw&#x0456;&#x0455;h t&#x043E; 
n&#x043E;l&#x043E;ng&#x0435;r r&#x0435;c&#x0435;&#x0456;v&#x0435; 
m&#x0435;&#x0455;&#x0455;&#x0430;g&#x0435;&#x0455; th&#x0430;t 
&#x0440;r&#x043E;m&#x043E;t&#x0435; &#x0455;urv&#x0456;v&#x0430;l 
t&#x0456;&#x0440;&#x0455;, 
&#x0440;l&#x0435;&#x0430;&#x0455;&#x0435;cl&#x0456;ck h&#x0435;r&#x0435; 
t&#x043E; un&#x0455;u&#x042C;&#x0455;cr&#x0456;&#x042C;&#x0435;.4 Unstable as 
water, thou shalt not excel because thou wentest up to thy fathers bed then 
defiledst thou it he went up to my couch.34 And Pharaohnechoh made Eliakim the 
son of Josiah king in the room of Josiah his father, and turned his name to 
Jehoiakim, and took Jehoahaz away and he came to Egypt, and died there.37  And 
the thing was good in the eyes of Pharaoh, and in the eyes o!
f all his servants.
__EOF__

my $chars = 0;
my $uchars = 0;

for (split("\n", $data)) {
    print STDERR "line: ", $_, "\n";

    my @matches = m/[\001-\045\047-\177]|&(?!#x[0-9A-F]{4};)/g;
print STDERR "matches: ", join(',', @matches), " count ", scalar @matches, "\n";
    my $chars += scalar @matches;
print STDERR "chars: ", $chars, "\n";

    @matches = m/&#x[0-9A-F]{4};/g;
print STDERR "matches: ", join(',', @matches), " count ", scalar @matches, "\n";
    my $uchars += scalar @matches;
print STDERR "uchars: ", $uchars, "\n";

print STDERR "\n";

}

Reply via email to