Thank you, I thought I need to use something called "dynloader" from core which is used by source filters but this happened to be more easier that I could imagine :-)

I got my second Perl experiment to work exactly the way I wanted by using this anonymous sub reference solution.

Here is my extremely fast precompiled Embedded Perl HTML template for your reference.

use 5.010; use strict; use warnings; our $start_time = time; #Embedded perl HTML template compiler object class package HTML::template; #Preloads new template object: #@_ = class, embedded perl/html input source sub new { my ($class, $input) = @_; $input //= $_; #Slurp the source template open my $fh, "<", $input or die "$! \"$input\""; local $/; my $slurp = <$fh>; close $fh; #Extract perl script from the template my $content = \$slurp; my $position = 0; my $script = "sub {\n\# line 1 \"$input\"\n"; #Scan html comment tags while ( $slurp =~ /<!--(?<cmd>.*?)-->/gso ) { #Insert text block $script .= "print substr(\${\$content},$position,$-[0]-$positi +on);\n"; #Translate line numbers my $line = ( substr($slurp,0,$position) =~ tr/\n// ) + 1; #Insert perl block using fixed line number $script .= "\# line $line\n$+{cmd}\n"; #Advance to next block $position = $+[0]; } #Insert the last text block $script .= "print substr(\${\$content},$position);}"; #Precompile script my $compiled = eval($script) or die; #Define template object list bless [$content, $compiled], $class; } #Execute the template object ##@_ = class, html output target sub run { my ($self, $output) = @_; my ($content, $compiled) = @{$self}; $output //= $_; #Redirect output local (*STDOUT); open(STDOUT, ">", $output); #Excute precompiled script $compiled->(); } #Sample program utilizing HTML::template my $sample_input = <<'END'; Numbers generated at <!--print $start_time;--><br> <!--for(my $x = 1; $x < 5; $x++) {-->Number=<!--print $x;--><br> <!--}-->Time used <!--print time - $start_time;--> seconds.<br> END my $template = HTML::template->new(\$sample_input); my $sample_output = ''; $template->run(\$sample_output); print $sample_output; #Output from sample_template Numbers generated at 1265498059<br> Number=1<br> Number=2<br> Number=3<br> Number=4<br> Time used 0 seconds.<br>

In reply to Re^2: Perl generating embedded Perl by AriSoft
in thread Perl generating embedded Perl by AriSoft

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.