Hello fellow monks.

The code below uses a source code filter, which replaces all "word"s with "worlds". However, it only prints "Hello word" instead of "Hello world".

# test code my $a = 'use filtertest; BEGIN { print "eval test\n"; } sub { print "Hello word\n"; }->(); END { print "eval over\n" }'; eval $a;
# module: filtertest package filtertest; use Filter::Util::Call; sub import { my($type, @arguments) = @_; filter_add( sub { my($status); $status = filter_read(); s/word/world/g if ($status > 0); $status } ) } 1;

The problem is that I use eval to evaluate the code string. Actually, perl -e 'use filtertest; print "Hello word\n"' gives the same, i.e. wrong, result. But

use filtertest; print "Hello word\n";

works properly.

It seems the BEGIN magic of the filter is not executed when being 'eval'ed. Does this mean that Filter::Util::Call confilcts with the builtin eval function?

Thanks in advance. Feel free to correct my mistakes.


In reply to Filter::Util::Call does not work in eval? by withering

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.