in reply to eval function

Eval is a method that allows you to run dynamically generated (or dynamically retrieved) code.

Generally, I view it as a masochistic feature of the language, try not to use it unless you really need to (there is almost always a way to get around it). Most applications I have seen that really require eval fall under the heading of Stupid Perl Tricks.

It is often used to confuse, impress, and/or scare other perl programmers; or to break rules. What's your goal and why do you think it might require eval?

Replies are listed 'Best First'.
Re^2: eval function
by doom (Deacon) on Apr 13, 2007 at 21:46 UTC
    Generally, I view it as a masochistic feature of the language, try not to use it unless you really need to (there is almost always a way to get around it). Most applications I have seen that really require eval fall under the heading of Stupid Perl Tricks.
    There's no other way to do error trapping in perl. If you want to intercept a "die/croak" in someone else's code and handle it yourself, you need to use eval.

    Myself, I like to do things like:

    use Test::More; SKIP: { eval { require DBD::SQLite }; skip "DBD::SQLite not installed", 3 if $@; # 3 is "how many to skip" # ... tests using SQLite }

      dynamo was talking about eval EXPR.
      You are talking about eval BLOCK.
      Despite the similariry in their name, they are two very different functions with very different purposes.