in reply to Use 'use' in foreach
And I am able to install these modules ... The only problem is that I can't 'use' them afterwards.
If you can install them (using one of the many ways, cpan, cpanm, perl Makefile.PL && make && make test && make install, ppm, ...) then you should be able to use them. Otherwise, you may have installed them in a different location than your perl expects, this might happen, for example, if you have two versions of Perl installed.
Note that since use has a compile-time effect, it doesn't make sense to put it in a foreach. If you want to have the advantages of that compile-time effect, like e.g. not having to use parentheses on imported functions, then the list of modules has to be known at compile time, so it's unclear to me why you don't just write use Foo::Bar; use Bar::Foo;.
Loading modules at runtime can be achieved in other ways. For example, require Foo::Bar; Foo::Bar->import; or my $modulename = "Foo::Bar"; eval "use $modulename; 1" or die $@; (Update before posting: Or e.g. Module::Load, as hippo showed).
Update: If you are still having trouble, please show us an SSCCE so we can try to reproduce the problem on our end, plus the error messages you're getting. See also How do I post a question effectively?
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Use 'use' in foreach
by zidi (Acolyte) on Jul 20, 2017 at 08:33 UTC | |
by Corion (Patriarch) on Jul 20, 2017 at 09:03 UTC | |
by zidi (Acolyte) on Jul 20, 2017 at 14:27 UTC | |
by Corion (Patriarch) on Jul 20, 2017 at 14:32 UTC |