My script works well, but if I put the BEGIN block at the tail like this:use strict; use warnings; use FindBin; use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib/perl5/site_perl/5.8.5"; BEGIN { use Config; require lib; print "archname:$Config{archname}\n"; if ($Config{archname} =~ /^x86_64/) { print "x86_64\n"; lib->import( "$FindBin::Bin/lib64/perl5/5.8.5/x86_64-linux-thread-multi", "$FindBin::Bin/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread +-multi"); } else { print "i386\n"; lib->import( "$FindBin::Bin/lib/perl5/5.8.5/i386-linux-thread-multi", "$FindBin::Bin/lib/perl5/site_perl/5.8.5/i386-linux-thread-mul +ti"); } } use utf8; use threads; use Carp; use IO::Socket::SSL; use IO::Select; use Log::Log4perl;
It throw the error "Can't locate Net/SSLeay.pm in @INC", and I can't find the right path in @INC.use strict; use warnings; use FindBin; use lib "$FindBin::Bin/lib"; use lib "$FindBin::Bin/lib/perl5/site_perl/5.8.5"; use utf8; use threads; use Carp; use IO::Socket::SSL; use IO::Select; use Log::Log4perl; BEGIN { use Config; require lib; print "archname:$Config{archname}\n"; if ($Config{archname} =~ /^x86_64/) { print "x86_64\n"; lib->import( "$FindBin::Bin/lib64/perl5/5.8.5/x86_64-linux-thread-multi", "$FindBin::Bin/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread +-multi"); } else { print "i386\n"; lib->import( "$FindBin::Bin/lib/perl5/5.8.5/i386-linux-thread-multi", "$FindBin::Bin/lib/perl5/site_perl/5.8.5/i386-linux-thread-mul +ti"); } }
I also change the $Config{archname64} to $Config{archname} and, use $Config{archname} =~ /^x86_64/ to decide whether It is a x86_64 host. Because I find that $Config{archname64} is empty(although existed) in both i386 and x86_64 Perl.
In reply to Re^3: How to instrust Perl to load the right modules based on architecture?
by sunshine_august
in thread How to instrust Perl to load the right modules based on architecture?
by sunshine_august
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |