Comme le titre l'indique j'ai des problemes avec l'utilisation du module
Scalar::Util 'dualvar'.

Lorsque que je cherche a utiliser le module Scalar::Util 'dualvar' j'ai le message suivant :

PERL> use Scalar::Util 'dualvar'
is only avaliable with the XS version at (eval 2) line 1
BEGIN failed--compilation aborted at (eval 2) line 2.
Ok cela signifie qu'il faut que j'installe une version plus recente de Scalar::Util qui supporte 'dualvar' ...
Le probleme est que j'ai fait l'installation de cette nouvelle version !!!
Mais que perl ne semble pas aller chercher le "bon" module c-a-d le nouveau.

Lorsque je fait un perl -V j'ai le message suivant :

@INC:
/share/supported/lib/perl5/5.8.5
/share/supported/perl_modules/bioperl-semi-live/i386-linux-thread-multi
/share/supported/perl_modules/bioperl-semi-live
/share/supported/perl_modules/lab
/share/supported/perl_modules/DBI-1.43/i386-linux-thread-multi/DBI
/share/supported/perl_modules/GD-2.15/i386-linux-thread-multi
/share/supported/apps/ogmp/lib/perl/ogmp
/share/supported/perl_modules/IO-String-1.07
/share/supported/perl_modules/IO
/share/supported/perl_modules/i386-linux-thread-multi
/share/supported/perl_modules/DBD-Pg-1.43
/usr/lib/perl5/5.8.3/i386-linux-thread-multi
/usr/lib/perl5/5.8.3
/usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.3
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.3
/usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.2
/usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.1
/usr/lib/perl5/vendor_perl/5.8.0
/usr/lib/perl5/vendor_perl/5.6.1
/usr/lib/perl5/vendor_perl
Une de mes questions y a t'il possibilité de savoir qu'elle module perl va chercher. Car le module que je veux utiliser ce situe la :
/usr/lib/perl5/5.8.3

Lorsque je fait cela :

use lib "/usr/lib/perl5/5.8.3/Scalar 'dualvar'"
perl semble être d'accord avec moi et ne pose pas de probleme seulement je ne suis pas sur que ca fonctionne.

OK en admettant que cela fonctionne, mon but réel n'est pas d'utiliser Scalar::Util 'dualvar' mais IO::Socket::SSL

Je teste donc le code suivant :
PERL> use lib "/usr/lib/perl5/5.8.3/Scalar 'dualvar'"

PERL> use IO::Socket::SSL
is only avaliable with the XS version at /usr/lib/perl5/vendor_perl/5.8.0/IO/Socket/SSL.pm line 30
BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.0/IO/Socket/SSL.pm line 30.
Compilation failed in require at (eval 5) line 2.
BEGIN failed--compilation aborted at (eval 5) line 2.
Donc il n'est pas d'accord avec moi a cause de la ligne 30 de /usr/lib/perl5/vendor_perl/5.8.0/IO/Socket/SSL.pm

Donc je regarde :
la ligne 30 de SSL.pm :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
# non-XS Versions of Scalar::Util will fail
BEGIN{
        eval { use Scalar::Util 'dualvar'; dualvar(0,'') };
        die "You need the XS Version of Scalar::Util for dualvar() support" 
                if $@;
}

Ok je me dit que c'est le probleme de Scalar::Util 'dualvar'....
Je remplace donc le code precedent par

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
# non-XS Versions of Scalar::Util will fail
BEGIN{
        eval { use lib "/usr/lib/perl5/5.8.3/Scalar 'dualvar'"; dualvar(0,'') };
        die "You need the XS Version of Scalar::Util for dualvar() support" 
                if $@;
}
Bah oui on c'est jamais d'ici a ce que ca fonstionne !!!

Bah non malheuresement ca fonctionne pas
J'ai le message suivant d'erreur :

PERL> use IO::Socket::SSL
You need the XS Version of Scalar::Util for dualvar() support at /usr/lib/perl5/vendor_perl/5.8.0/IO/Socket/SSL.pm line 31.
BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.0/IO/Socket/SSL.pm line 33.
Compilation failed in require at (eval 2) line 2.
BEGIN failed--compilation aborted at (eval 2) line 2.
Donc voila je ne sais pas trop comment m'en sortir....

Merci a ce qui son arrivé à ce niveau du message .

Loula