use autouse ... or not
Due to my cursory reading in the Perl Cookbook, 2nd Edition, earlier this
week, I've been investigating the use autouse pragma, to see if it will
indeed solve my issue of wanting to use different modules based on the current
situation. Unfortunately, I cannot find any documentation on it in perldoc.
I remember seeing something about wrapping this stuff into a BEGIN block, but
that would require knowing certain information immediately, and I might need
the code to work through some steps before getting there.
Fortunately, this node just appeared on Perl Monks today, and I got to see other ways of doing it:
- The
ifmodule lets you do something likeuse if $type eq 'x', "Some::Module";However,$typemust be known at compile time (i.e., it's based on system info or on@ARGV); this probably wouldn't work in a web-based application. - Use
requireandimportinstead:if $type wq 'ex') { require Some::Module; Some::Module->import if Some::Module->can("import"); }If your module doesn't export anything, you can even omit the call toimport. - Use an
eval:if ($type eq 'x') { eval "use Some::Module"; }This gets around theimportproblem, but could possibly run into other compile time issues.
So, basically, I already had the tools to do the job; just needed to examine the problem more.