The use function happens at compile time and must take a bareword, but it
is functionally equivalent to

BEGIN { require Module; Module->import( LIST ); }

And the require function allows you to pass a string, but be aware there
are lots of differences in behavior when passing a string vs a bareword:
https://perldoc.perl.org/functions/require



On Mon, Dec 14, 2020, 10:57 Jim Gibson <jimsgib...@gmail.com> wrote:

> I have not used it myself, but the ‘if’ module allows one to load modules
> conditionally:
>
> use if CONDITION, MODULE => ARGUMENTS;
>
> See ‘perldoc if’ for more details.
>
>
> > On Dec 14, 2020, at 7:23 AM, Gary Stainburn <
> gary.stainb...@ringways.co.uk> wrote:
> >
> > I've written my first re-usable modules in Perl, and all goes well.
> However, I want to know if / how I can use a string variable in the 'use'
> clause.
> >
> > In PHP I have a simple system of turning on/off debugging and version
> control.  Any file *1.html is development version.  I then have
> >
> > $DEBUG=(preg_match('/1.htm/',$_SERVER['REQUEST_URI'])) ? '1' : '';
> > include_once("sql$DEBUG.inc");
> > include_once("security$DEBUG.inc");
> >
> > This way I have a live and a development version of every HTML and every
> inc file, and putting any one file is simply a case of copying that file
> over.
> >
> > I'm looking to replicate  this in Perl.  How can I do the following?
> >
> > #!/usr/bin/perl -w
> >
> > use warnings;
> > use strict;
> >
> > my $DEBUG=($0=~/1$/) ? '1' : '';
> > use RW::Sql$DEBUG;
> > use RW::Docs$DEBUG;
> >
> > I've found that you can use "require" and pass a path.  I understand
> that require is run time, while use is compile time.  Are there any
> down-sides to using require?
> >
> > --
> > To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> > For additional commands, e-mail: beginners-h...@perl.org
> > http://learn.perl.org/
> >
> >
>
> Jim Gibson
>
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>
>
>

Reply via email to