[sam@localhost xml_test]$ time ./parser.pl > parser.out
real 0m1.827s
user 0m1.730s
sys 0m0.040s
[sam@localhost xml_test]$ time ./regex.pl > regex.out
real 0m0.200s
user 0m0.160s
sys 0m0.040s
[sam@localhost xml_test]$ diff parser.out regex.out
####
#!/usr/bin/perl -w
print '', "\n";
print "\n";
for (0 .. 9000) {
my $word = get_word();
print "<$word>\n";
if (rand(10) > 3) {
for (0 .. rand(5)) {
my $msg = get_words(30);
print "\t$msg\n";
}
}
print "$word>\n";
}
print "";
BEGIN {
my @words;
open(WORDS, "/usr/dict/words")
or open(WORDS, "/usr/share/dict/words")
or die "Can't open /usr/dict/words or /usr/share/dict/words: $!";
while () {
chomp;
push @words, $_ if /^\w+$/;
}
srand (time ^ $$);
# get a random word
sub get_word {
return lc $words[int(rand(scalar(@words)))];
}
# get $num random words, joined by $sep, defaulting to " "
sub get_words {
my ($num, $sep) = @_;
$sep = " " unless defined $sep and length $sep;
return join($sep, map { get_word() } (0 .. ((int(rand($num)))+1)));
}
}
##
##
#!/usr/bin/perl -w
open(FILE, 'test.xml') or die $!;
my $xml = join('', );
while($xml =~ m!([\w\s]+)!g) {
print $1, "\n";
}
##
##
#!/usr/bin/perl -w
use strict;
use XML::Parser;
my $p = new XML::Parser(Style => 'Stream', Pkg => 'main');
$p->parsefile('test.xml');
my $in_msg = 1;
sub StartTag {
$in_msg++ if $_ eq '';
}
sub Text {
print $_ if $in_msg;
}
sub EndTag {
if ($_ eq '') {
$in_msg--;
print "\n";
}
}