Mini Shell
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Parser ();
my $doc = <<'EOT';
<!-- This is not where <BODY> starts -->
<title>foo</title>
<script language="Perl" description="Print out <BODY>">
open(BODY, "body.txt");
while (<BODY>) {
print;
}
</script>
<!-- The next thing will be <BODY> the body -->
<Body>
Howdy!
</body>
EOT
my $body_offset;
HTML::Parser->new(
start_h => [
sub {
return unless shift eq "body";
$body_offset = shift;
shift->eof; # tell the parser to stop
},
"tagname,offset,self"
]
)->parse($doc);
die "No <body> found" unless defined $body_offset;
my $head = substr($doc, 0, $body_offset, "");
print $doc;
Zerion Mini Shell 1.0