# This writer has interleaved phases
sub BEGIN {
use vars qw(@EVENTS);
}
sub nullroutine {
my $a = 1;
}
phase BAD {
sub (paragraph) {
push @EVENTS, "BAD paragraph";
return;
}
sub document {
push @EVENTS, "BAD document";
return;
}
}
phase PRE {
sub document {
push @EVENTS, "PRE document";
return;
}
}
phase POST {
sub document {
push @EVENTS, "POST document";
return join '', map "$_\n", @EVENTS;
}
}
phase PRE {
sub paragraph {
nullroutine();
push @EVENTS, "PRE paragraph";
}
}