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?
In reply to Re: Use 'use' in foreach
by haukex
in thread Use 'use' in foreach
by zidi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |