[%# Run this through tpage - from Template %] [% debug = 0 %] [% numbers = [ 1, 2, 3, 4, 5, 6 ] -%] [% end = '\)' -%] [% start = '\w+\(' -%] my %functions = (); [% FOR level = numbers -%] $functions{ [% level %] } = sub { my $string = shift; [% IF debug %]my $warn = "running [% level %] on '$string'";[% END %] $string =~ s/[% end %]{[% level %]}$//; $string =~ s/^([% start %]){[% level %]}//; [% IF debug %]warn "$warn to produce '$string'\n\n";[% END %] return $string; }; [% END -%] $functions{-1} = sub { my $string = shift; $string =~ m/\(([^()]+)\)+/; [% IF debug %]warn "running -1 on $string to produce '$1'\n";[% END %] return $1; }; sub get_proparg_evdb { my $string = shift; my $level = shift || return $string; return &{$functions{ $level }}( $string ) || die 'Add universal function here'; }