#!/usr/local/bin/perl use strict; use warnings; use HTML::TokeParser::Simple; use HTML::Template; my $p = HTML::TokeParser::Simple->new(\get_html()); my ($in_pre, $pre); while (my $t = $p->get_token){ $in_pre++, next if $t->is_start_tag(q{pre}); next unless $in_pre; last if $t->is_end_tag(q{pre}); $pre .= $t->as_is; } my @lines = grep{/\S/} split /\n/, $pre; my $tmpl = HTML::Template->new(scalarref => \get_tmpl()); my @loop = map{{line => $_}} @lines; $tmpl->param(loop => \@loop); print $tmpl->output; sub get_html{ return <
line 1
line 2
line 3
HTML } sub get_tmpl{ return <

TMPL } ####

line 1

line 2

line 3