Thread Probleme mit require beim optionalen Laden von Modulen (10 answers)
Opened by j0llyr0g3r at 2008-06-18 16:16

j0llyr0g3r
 2008-06-18 16:16
#111201 #111201
User since
2008-06-18
3 Artikel
BenutzerIn
[default_avatar]
Hey ho,

ich hab hier ein Problem mit use und require.

Ich möchte Module bedingt laden, je nach dem welche Option übergeben wird.

Ich dachte folgender Code würde das bewerkstelligen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
GetOptions(
                   'outfile'            => \$out_file,
                   'logfile'            => \$log_file,
           'verbose'            => \$verbose,
           'debug'                      => \$debug,
                   'modules=s@{1,}' => \$scan_modules);

print_args() if $verbose;

# load modules
foreach my $scan_module (@$scan_modules) {
        require $scan_module;
}


Das gibt mir aber folgende Fehlermeldung:

Code (perl): (dl )
Can't locate my_package::my_module in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./inv_unix.pl line 30.


Verwende ich aber ein

Code (perl): (dl )
use my_package::my_module;


fest verdrahtet im source-code funktioniert das.

Wo liegt mein Denkfehler?

In den erwähnten Unterschieden zwischen use und require

------------------------
[nop] * use only expects a bareword, require can take a bareword or an expression
* use is evaluated at compile-time, require at run-time
* use implicitly calls the import method of the module being loaded, require does not
* use excepts arguments in addition to the bareword (to be passed to import), require does not
* use does not behave like a function (i.e can't be called with parens, can't be used in an expression, etc), whereas require does [/nop]
-------------------------

sehe ich nichts was dieses Verhalten erklären würde.....

View full thread Probleme mit require beim optionalen Laden von Modulen