====== Number XML elements with Perl ====== Well, this turned out to be much simpler than I thought. There was a half-ready text document to be transformed into XML. It contained a lot of empty ''pb'' (pagenumber) elements, like this: ''''. I had to insert page numbers as values of ''@n''; the count was to grow by 2 from 50 to 512. At first I got confused just trying to imagine a program that would do this, but eventually the following short script did the trick: #!/usr/bin/perl # stat.perl - number xml elements, starting from a given number # usage: perl stat.perl filename startingnumber use strict; use warnings; # get the values from commandline: name of file, first page number: my $filein = $ARGV[0]; my $pagenum = $ARGV[1]; # avoid "wide character in print" warning: binmode STDOUT, ":utf8"; # open $filein: open(FILE, '<:encoding(utf8)', $filein) or die "Could not open '$filein' $!\n"; # read every line of file, find pb: while () { if (/pb n="/) { s/""/"$pagenum"/; print $_; # increase counter for next match (50 52 54...): $pagenum = $pagenum + 2; # if nothing matches, just print the line: } else { print $_; } } # done!