in reply to Use 'use' in foreach

The only problem is that I can't 'use' them afterwards. I tried:
foreach (@Dependencies){ use $_; }

use needs a bareword. Just do the same you did when testing for the modules:

foreach (@Dependencies){ eval "use $_;1" or die "Can't load '$_'!\n"; }

If you want to avoid string eval for some sort of paranoia (but be aware that require uses string eval under the hood), you can emulate use with require and a call to import():

foreach my $mod (@Dependencies){ (my $file = $mod) =~ s{::}{/}g; $file .= '.pm'; require $file or die "Can't load '$mod' (file '$file')!\n"; $mod->import; }
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

Replies are listed 'Best First'.
Re^2: Use 'use' in foreach
by zidi (Acolyte) on Jul 20, 2017 at 07:30 UTC
    Thanks for all the answere. This one works like a charm. Funny how I used eval("use $_") and thought it would only check if it's in my lib. Little did I know it would also "use" if available. Thanks!!!