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
}
| [reply] [d/l] |
| [reply] [d/l] [select] |