Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8837[/thread]

Prüfen ob ein Modul installiert ist

Leser: 5


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
roli
 2007-03-13 14:24
#75006 #75006
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Hi Leute,

wie kann ich prüfen ob ein Modul installiert ist? Ich hatte vermutet das
Code: (dl )
use Spread::Queue or die "Modul ist nicht installiert\n";

Das machen wuerde, aber leider kommt folgendes:
Quote
syntax error at D:\temp\mod_check.pl line 35, near "use Spread::Queue or"
Execution of D:\temp\mod_check.pl aborted due to compilation errors.


Danke\n\n

<!--EDIT|roli|1173788795-->
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
renee
 2007-03-13 14:31
#75007 #75007
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du könntest es so machen:
Code: (dl )
1
2
3
4
5
6
7
my $bool;
BEGIN{
eval "use NonExistantPackage;";
$bool = 1 unless $@;
}

print "Modul nicht installiert" unless $bool;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-03-13 14:34
#75008 #75008
User since
2005-01-17
14567 Artikel
Admin1
[Homepage]
user image
Oder:
Code: (dl )
1
2
eval "require NonExistantPackage;";
print "Modul nicht installiert" if $@;
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

roli
 2007-03-13 14:38
#75009 #75009
User since
2004-12-31
424 Artikel
BenutzerIn
[default_avatar]
Bing, so geht's.
Da denkt man einmal, man haette was begriffen, und muesste nicht gleich fragen, und dann geht's doch nicht. :(
Aber dafuer bekommt man ja hier promt Antwort, super.

Vielen Dank
Roland
--
"Steh vorn, während du fragst;
sitzen soll, wer antwortet."
Aus "Die Edda des Snorri Sturluson" "Gylfis Täuschung" Strophe 2
renee
 2007-03-13 14:42
#75010 #75010
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das mit "require" kann anscheinend bei bestimmten Modulen zu Problemen führen. Bei den meisten Modulen sollte es aber keine Probleme geben...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-03-13 14:51
#75011 #75011
User since
2005-01-17
14567 Artikel
Admin1
[Homepage]
user image
require ist doch aber eine gute Methode, um zur Laufzeit zu prüfen.

Bei welchen Modulen macht es Probleme?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

kristian
 2007-03-13 14:51
#75012 #75012
User since
2005-04-14
684 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo

"use Modul;" ist das Gleiche wie "BEGIN { require Modul; import Modul; }", die Module bei denen es Probleme gibt brauchen halt den Import.

Gruss
Kristian
renee
 2007-03-13 15:06
#75013 #75013
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich selbst hatte auch noch keine Probleme, aber von der CGI::Application-Mailingliste:
Quote
o If you use CAP::AutoRunmode, you need to let the mechanic know so
that it can also 'use' it, otherwise things Just Don't Work. The
way things are right now it's probably a dependency. I'll at
least need to eval the use statement, but I might be able to do
something better. Require/import on demand doesn't work, I think
because AutoRunmode does its magic at compile time.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-03-13 15:25
#75014 #75014
User since
2005-01-17
14567 Artikel
Admin1
[Homepage]
user image
[quote=kristian,13.03.2007, 13:51]"use Modul;" ist das Gleiche wie "BEGIN { require Modul; import Modul; }", die Module bei denen es Probleme gibt brauchen halt den Import.[/quote]
Ist mir bekannt, dass use ein solches Konstrukt ist ;)

Ja, wenn es noch einen import braucht, gibt es natürlich manchmal Probleme.

Aber es wra ja nicht explizit gesagt, wann geprüft werden muss. Deswegen mein eval-require-Code ;)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

betterworld
 2007-03-13 16:04
#75015 #75015
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Zum einen gibt es bei require das Problem mit dem import, zum anderen ist es eben erst zur Laufzeit.

Wenn man use moechte, kann man es auch einfach so schreiben:
Code: (dl )
1
2
3
BEGIN {
eval 'use Module; 1' or die;
}
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2007-03-13 14:24.