|
|
Problem mit ExtUtils::Installed in Active Perl
[thread]14615[/thread]
hide all
open all
-

+55 replies
-
User since 2009-09-13
1222
articles
|
Neuer Thread, da im anderen wohl nicht ganz klar geworden ist, wo das Problem liegt.
Folgende Situation:
- Windows XP oder Vista (auf beiden nachstellbar)
- Kein Perl installiert, quasi komplett perlfreie Zone
- Activeperl v5.8.9 oder v5.10.1 (mit beiden Versionen gleicher Effekt) wird installiert
- Folgendes Script wird ausgeführt:
| Code (perl): |
|
use strict;
use warnings;
use ExtUtils::Installed;
my ($inst) = ExtUtils::Installed -> new ();
|
Ausgabe siehe http://rapidshare.de/files/49121358/perlfehler.png...
Diese Ausgabe ist nicht erwünscht und zerstört auch jegliche Anwendung über CGI, weil sie sich vor den Content-Type knallt.
Wie kann die Anzeige unterdrückt werden?
Danke
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+3 replies
-
User since 2003-08-04
13019
articles
|
|
Welche Version von ExtUtils::Installed ist das?
|
|
|
|
|
|
-
User since 2009-09-13
1222
articles
|
Dies hier gibt das Modul selbst aus (natürlich nur ein Ausschnitt):
| Code: |
|
ExtUtils::CBuilder == >0.27< ExtUtils::Command == >1.16< ExtUtils::Manifest == >1.58< ExtUtils::ParseXS == >2.22<
|
Ist das das richtige?
Edit: Das ist jetzt für AP v5.10.1, für das ältere kommt in ca. 45 Minuten. Bis gleich.
Last edited: 2010-02-08 17:07:52 +01:00
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-
User since 2009-09-13
1222
articles
|
Im AP v5.8.9 sieht das so aus:
| Code: |
|
ExtUtils::CBuilder == >0.27< ExtUtils::Command == >1.16< ExtUtils::Install == >1.54< ExtUtils::Manifest == >1.58< ExtUtils::ParseXS == >2.2202<
|
Erstaunlich, dass es genau so bzw. sogar neuer ist als im AP 5.10
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+13 replies
-
User since 2009-09-13
1222
articles
|
Gibt es denn evtl. hierzu vorübergehend einen Zwischenlösung?
Leider wird das in der Meldung beschriebene Modul nicht gefunden, daher kann ich es nicht installieren.
Und Google spuckt dazu nichts passendes aus.
Herumspielen mit den SIG-Handlern sowie mit STDOUT hat auch alles nichts gebracht.
Weiß jemand einen Trick dazu?
Oder: Ist dieses Problem bei Euch überhaupt vorhanden oder kommt die Meldung nur bei mir?
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+12 replies
-
User since 2003-08-04
13019
articles
|
|
Ich habe ja schon geschrieben, dass es ein wohl eher seltenes Problem ist. Ich selbst habe es noch nicht gehabt und ich kann im Moment auch nicht ganz nachvollziehen, wo das herkommt.
|
|
|
|
|
|
-

+3 replies
-
User since 2009-09-13
1222
articles
|
Das heißt, wenn Du auf einem perlfreien Windows-Rechner AP 5.8 oder 5.10 ganz frisch von der AP-Seite runter lädst und installierst und anschließend mein Scriptbeispiel laufen läßt, kommt diese Meldung NICHT bei Dir?
Verstehe ich das richtig?
Oder kommt sie und Du weißt noch nicht, warum?
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+7 replies
-
User since 2009-09-13
1222
articles
|
Kann ich denn über einen anderen Weg solch einen Compiler installieren, nachdem da gefragt wird, damit das Modul wenigstens ruhig ist?
Ich hab von Compilern leider noch viel weniger Ahnung als von Perl.
Da wäre ich über einen Schubs in die richtige Richtung sehr dankbar.
Das letzte mal hab ich auf dem C64 Basic kompiliert..... :))
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+6 replies
-
User since 2003-08-04
13019
articles
|
Natürlich kannst Du einen Compiler noch installieren. Du solltest aber darauf achten, dass es der gleiche Compiler ist, mit dem auch Dein Perl compiliert wurde. Sonst gibt es bei compilierten Modulen unter Umständen Probleme.
Welcher Compiler das ist, musst Du aber rausfinden (schau Dir mal perl -V an).
|
|
|
|
|
|
-

+5 replies
-
User since 2009-09-13
1222
articles
|
Danke für die Mühe.
-V bringt:
| Code: |
|
Compiler: cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DUSE_SI TECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX', optimize='-MD -Zi -DNDEBUG -O1', cppflags='-DWIN32' ccversion='12.00.8804', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8 alignbytes=8, prototype=define
|
Gibt es eine Anleitung dazu, wie man das liest um herauszufinden, welcher Compiler das ist?
Oder darf ich nochmal um Deine Hilfe bitten?
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-
User since 2009-09-13
1222
articles
|
|
|
|
-
User since 2009-09-13
1222
articles
|
Ergänzung: Habe gerade durch Zufall festgestellt, dass diese doofe Meldung sogar dann kommt, wenn ich das Script einfach nur mit perl -c test.pl auf Syntax prüfen lasse.
Vielleicht hilft das jemandem bei der Ursachenfindung. Ich hoffe es sehr *betend*
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+16 replies
-
User since 2003-08-04
7391
articles
|
wenns nur um die ausgabe geht, wieso leitest du nicht einfach STDERR um?
edit: bzw. wenns auf STDOUT landet, STDOUT. musst du halt nur vor dem use von dem entsprechenden modul machen.
Last edited: 2010-02-09 13:45:06 +01:00
|
|
|
|
|
|
-

+15 replies
-
User since 2009-09-13
1222
articles
|
2010-02-09T12:42:55
pqedit: bzw. wenns auf STDOUT landet, STDOUT. musst du halt nur vor dem use von dem entsprechenden modul machen.
Hatte ich schon versucht, wird vom Modul ignoriert, Meldung kommt trotzdem. Hab das auch weiter oben oder im anderen Thread gepostet.
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+14 replies
-
User since 2003-08-04
7391
articles
|
|
im anderen thread sehe ich, dass du STDOUT nach dem use umleitest. ich meinte aber davor. stichwort begin-block. oder halt string-eval.
|
|
|
|
|
|
-

+13 replies
-
User since 2009-09-13
1222
articles
|
Hatte ich natürlich auch getestet und brachte garnichts aber wie gesagt, ich kann nicht alles schreiben, was ich probiert hab, da wäre ich nur noch am schreiben. Manchmal wäre es hilfreich, Ihr würdet mir solche Kleinigkeiten zutrauen und als "schon versucht" voraussetzen.
Aber was soll ich verlangen, wenn ich mich schon bei -> und = so doof anstelle.
Es ist zum heulen.
Das hier bringt die Meldung nach wie vor. Und zwar bei Ausführung und auch beim Check mit perl -c test.pl
Wäre für mich jetzt auch nicht logisch gewesen, dass es damit lösbar ist, seit ich weiß, dass die Meldung auch bei -c kommt.
| Code (perl): |
|
use strict;
use warnings;
open my $oldout, ">&STDOUT" or die "Can't dup STDOUT: $!";
open STDOUT, '>', "foo.out" or die "Can't redirect STDOUT: $!";
print "test1\n";
use ExtUtils::Installed;
my ($inst) = ExtUtils::Installed -> new ();
open STDOUT,">&",$oldout or die "Can't dup \$oldout: $!";
print "test2\n";
|
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+10 replies
-
User since 2003-08-04
7391
articles
|
stichwort begin block. oder string eval. (ich wiederhole mich.)
wo ist das problem? weisste doch, wie das geht.
das use wird beim kompilieren ausgeführt. das ist dann schon längst passiert, wenn du STDOUT umleitest.
bitte lies doch mal meine posts genauer, du verlangst ja auch von den antwortenden öfter mal, dass sie deine fragen genauer lesen sollen.
|
|
|
|
|
|
-

+9 replies
-
User since 2009-09-13
1222
articles
|
Jaaaaa, jetzt läufts :)
Watt soll ich sagen? Ich sage einfach mal nur: D A N K E !!
Und sorry, dass man mir alles zweimal sagen muss, bis ich es schnalle.
Hier die Lösung:
| Code (perl): |
|
use strict;
use warnings;
open my $oldout, ">&STDOUT" or die "Can't dup STDOUT: $!";
open STDOUT, '>', "foo.out" or die "Can't redirect STDOUT: $!";
print "test1\n";
eval "use ExtUtils::Installed; 1;";
my ($inst) = ExtUtils::Installed -> new ();
open STDOUT,">&",$oldout or die "Can't dup \$oldout: $!";
print "test2\n";
|
Abschließende Frage: Ist meine Umleiterei von STDOUT so in Ordnung? Hab das irgendwo abgeschrieben aus dem Netz.
Danke
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+8 replies
-
User since 2003-08-04
7391
articles
|
2010-02-09T13:27:09
biancaUnd sorry, dass man mir alles zweimal sagen muss, bis ich es schnalle.
das an sich ist kein problem. deine ewige rummeckerei, wir sollen doch kein wissen voraussetzen und dann sollen wir doch wissen voraussetzen, das nervt. du beschimpfst regelmässig deine helfer, wenn dir was nicht passt.
ich hab das hier lediglich gepostet, damit das problem endlich mal vom tisch ist.
|
|
|
|
|
|
-

+7 replies
-
User since 2009-09-13
1222
articles
|
2010-02-09T13:29:22
pqdas an sich ist kein problem. deine ewige rummeckerei, wir sollen doch kein wissen voraussetzen und dann sollen wir doch wissen voraussetzen, das nervt. du beschimpfst regelmässig deine helfer, wenn dir was nicht passt.
ich hab das hier lediglich gepostet, damit das problem endlich mal vom tisch ist.
Hatte ich doch selbst geäußert und wieder zurückgenommen. War nur laut gedacht. ;)
Und Helfer beschimpfen?
Falls dem so ist, war es so nicht gemeint. Hab ich irgendwo ein falsches Wort benutzt?
Fühlt sich jemand beschimpft?
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+6 replies
-
User since 2003-08-04
7391
articles
|
2010-02-09T13:35:12
biancaUnd Helfer beschimpfen?
Falls dem so ist, war es so nicht gemeint. Hab ich irgendwo ein falsches Wort benutzt?
Fühlt sich jemand beschimpft?
im übertragenen sinne ja:
2010-02-07T19:10:23
biancaDas hab ich jetzt davon, dass ich ständig auf pq und die anderen höre und mit Modulen arbeite.
[...]
Module sind eine wirklich zweifelhafte Erfindung!
[...]
Wie kann man in so einen Mist soviel Zeit investieren? In der gleichen Zeit hätte ich mindestens 2 weitere funktionale Programmteile fertig gestellt. Das ärgert mich wirklich sehr!
wenn das alles so ein mist ist mit den modulen, warum benutzt du sie dann? es zwingt dich keiner.
und ich fühle mich wie schon gesagt veralbert, wenn du einserseits immer wieder forderst, man soll doch bitte nicht so viel wissen voraussetzen und dann wiederum hat man dir plötzlich zu wenig zugetraut und dann kommt ein genervtes "hab ich doch schon gemacht".
aber wie immer scheint das nicht bei dir anzukommen, dass du deine helfer damit vor den kopf stösst.
edit: da mir der vorwurf gemacht wurde, ich zitiere zusammenhanglos, so dass es für meine aussage passt, darf jeder die message komplett selber nachlesen: msg #132198
Last edited: 2010-02-09 15:08:37 +01:00
|
|
|
|
|
|
-

+4 replies
-
User since 2009-09-13
1222
articles
|
|
Wenn Du nicht immer nur das für Dich lesen würdest, was Dir als Grund gereicht, mich anzumachen, wäre unser Verhältnis vielleicht nicht so gestört. Das würde mich sehr freuen.
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-
User since 2009-09-13
1222
articles
|
2010-02-09T13:44:17
pqedit: da mir der vorwurf gemacht wurde, ich zitiere zusammenhanglos, so dass es für meine aussage passt, darf jeder die message komplett selber nachlesen: msg #132198
Ja, das war ich, weil der letzte Satz meines Posts in Deinem Zitat leider fehlt.
Aber mach Du mal :)
Sehr amüsant.
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-
User since 2003-08-04
7391
articles
|
2010-02-09T13:18:59
biancaManchmal wäre es hilfreich, Ihr würdet mir solche Kleinigkeiten zutrauen und als "schon versucht" voraussetzen.
hm. mal verlangst du, wir sollen nicht zuviel wissen voraussetzen, und dann verlangst du, wir sollen doch mal etwas wissen voraussetzen.
dann wieder schimpfst du generell auf module.
software-entwicklung ist kein zuckerschlecken.
also wie jetzt? sollen wir dir was zutrauen oder nicht?
das mit dem begin-block habe ich dir zugetraut. ich hatte es ja extra erwähnt. dann machst du das ganze doch ohne begin-block und schreibst "hab ich doch gemacht".
|
|
|
|
|
|
-
User since 2003-08-04
7391
articles
|
also, da du anscheinend nicht weisst, wie man ein use in ein string-eval packt (obwohl du es ja anderswo, z.b. mit GD::Graph, schon tust), hier nochmal zum mitlesen:
| Code (perl): |
eval "use ExtUtils::Installed";
|
dann wird das zeitlich auch zwischen den umleitungen ausgeführt.
|
|
|
|
|
|
-

+14 replies
-
|
GwenDragon
|
2010-02-09 13:46 |
|
|
|
User since 2005-01-17
5575
articles
|
Nur Perl 5.10.1 meckert das Fehlen des Compilers an.
Perl 5.8.9 tut das nicht bei ExtUtils::Installed.
|
Packagebeilage:
Perl-Beispiele können bei Anfängern und Perl-Evangelisten üble Irritationen verursachen und Damian Conway zur Rettung des »Guten Perl-Programmierstils« auf den Plan rufen!
Ich gebe niemals Perl-Code an Psychopathen weiter. Die bekommen von mir BASIC.
Germanistikfreaks und grammatikalisch Zwanghafte verweise ich an Hans weiter.
|
|
|
|
-

+13 replies
-
User since 2009-09-13
1222
articles
|
2010-02-09T12:46:43
GwenDragonNur Perl 5.10.1 meckert das Fehlen des Compilers an.
Perl 5.8.9 tut das nicht bei ExtUtils::Installed.
Vielen Dank fürs testen. Bei mir ist das leider definitiv in beiden Versionen.
Welche Version des Moduls hast Du bei 5.8.9 dabei?
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+7 replies
-
|
GwenDragon
|
2010-02-09 14:38 |
|
|
|
User since 2005-01-17
5575
articles
|
Die Meldung selbst ist in Config.pm beheimatet. ExtUtils::Installed ruft das irgendwie auf.
Abhilfe möglich.
Anstatt
use ExtUtils::Installed;
verwende
eval "use ExtUtils::Installed; ";
Das verhindert die Ausgabe.
Allerdings musst du dann den Fehlschlag auf das Nichtladen des Moduls anders prüfen, weil $@ ja schon die mistige Meldung über den Compiler ernthält.
Last edited: 2010-02-09 15:14:04 +01:00
|
Packagebeilage:
Perl-Beispiele können bei Anfängern und Perl-Evangelisten üble Irritationen verursachen und Damian Conway zur Rettung des »Guten Perl-Programmierstils« auf den Plan rufen!
Ich gebe niemals Perl-Code an Psychopathen weiter. Die bekommen von mir BASIC.
Germanistikfreaks und grammatikalisch Zwanghafte verweise ich an Hans weiter.
|
|
|
|
-
User since 2003-08-04
7391
articles
|
|
schrieb ich ja schon. es dauerte nur sehr lange, bis es bei bianca ankam.
|
|
|
|
|
|
-

+2 replies
-
User since 2003-08-04
13019
articles
|
|
Ah, in Config.pm. Kein Wunder, dass ich es auf die Schnelle nicht gefunden habe...
|
|
|
|
|
|
-
|
GwenDragon
|
2010-02-09 15:12 |
|
|
|
User since 2005-01-17
5575
articles
|
Ja, ich habe dort auch erst zuletzt nachgesehen.
Unter Windows ist es auch schwer zu finden, wenn eine die DOS-Befehle zur Suche nicht kennt (Linux vergiftet ;) ). Und nicht jeder Windows-Rechner hat grep.
|
Packagebeilage:
Perl-Beispiele können bei Anfängern und Perl-Evangelisten üble Irritationen verursachen und Damian Conway zur Rettung des »Guten Perl-Programmierstils« auf den Plan rufen!
Ich gebe niemals Perl-Code an Psychopathen weiter. Die bekommen von mir BASIC.
Germanistikfreaks und grammatikalisch Zwanghafte verweise ich an Hans weiter.
|
|
|
|
-
User since 2009-09-13
1222
articles
|
Ich mache eval "use ExtUtils::Installed;" or $error = "Kann Modul >ExtUtils::Installed< nicht aufrufen wegen >$!<"; das funktioniert soweit.
OK aus Deiner Sicht?
Edit: Nee, garnicht gut. Hab an der Stelle "Bad file descriptor" in $! stehen. Hmmm. Was frag ich denn da jetzt am besten mal ab?
Last edited: 2010-02-09 15:21:59 +01:00
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-

+2 replies
-
User since 2009-09-13
1222
articles
|
Mach es jetzt so, das läuft:
| Code (perl): |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
use strict;
use warnings;
my (@modules,$inst);
my $error = '';
open my $oldstd, ">&STDOUT" or $error = "Kann STDOUT nicht kopieren wegen >$!<";
if ($error eq '') {
open STDOUT,'>',"foo.out" or $error = "Kann STDOUT nicht umleiten wegen >$!<";
if ($error eq '') {
eval "use ExtUtils::Installed; \$inst = ExtUtils::Installed -> new (); \@modules = \$inst -> modules ();";
open STDOUT,">&",$oldstd;
close $oldstd;
}
}
if (scalar @modules) {
for my $modul (sort {lc $a cmp lc $b} @modules) {
print $modul . " == >" . $inst -> version ($modul) . "<\n";
}
}
|
|
|
10 print "Hallo"
20 goto 10
|
|
|
|
-
User since 2003-08-04
5694
articles
|
|
Wäre die andere mögliche Lösung von pq - der begin block - vielleicht Fehlerabfragetechnisch einfacher zu handhaben?
|
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
|
|
|
|
View all threads created 2010-02-08.
|