Remember that if you eval $szBlock it will return a reference to the subroutine. You will then have to call that subroutine reference.

This looks like homework so I shouldn't be giving you the answer but I don't know of any better way to explain it.

use strict; my $szBlock = q( sub { if ( $x > $y ) { return "X greater \n" ; } else { return "y greater \n" ; } } ) ; # # $szBlock is a string containing the text of the subroutine. # my ($x, $y) = (100,200); # # Set up $x and $y (you will have to do this before the eval # or strict won't like it.) # my $subref = eval $szBlock; # # if the eval worked $subref now has a reference to the # compiled subroutine # die $@ if $@; # # $@ will be true if the eval failed (if there was a typo in $szBlock) # # # Now we call the subroutine by "dereferencing" the reference in $subr +ef # print &$subref;
This will print
y greater

--

flounder


In reply to Re: dynamic perl code inside my perl program by flounder99
in thread dynamic perl code inside my perl program by Anonymous Monk

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.