use Template; my $TMPL = Template->new(); my $res; $TMPL->process( \*DATA, { screen => qw(screen1 screen2)[rand 2] }, \$res ); print "$res\n"; __END__ [% INCLUDE "$screen" %] [% BLOCK screen1 %] This is screen #1. [% END %] [% BLOCK screen2 %] This is screen #2. [% END %]