Hello Peco,
The issue is probably because Module::ScanDeps does not parse that
construct and so it is not packed.
A couple of options are:
1. Put the explicit require line in your calling script (or other
library under your control). There should be not need add it to @ISA as
Net::DNS::Resolver will (should) find the packed version and handle it
as needed.
2. Use the -M flag when packing your script using pp.
https://metacpan.org/pod/pp
To pack only one variant:
pp -M Net::DNS::Resolver::UNIX yourscript.pl
Or if you just want to use one command across platforms and are happy to
pack all variants, then you can use this. (It needs Par::Packer 1.031
or higher).
pp -M Net::DNS::Resolver:: yourscript.pl
See the documentation at https://metacpan.org/pod/pp
Regards,
Shawn.
On 16/09/2016 0:20, Juan José 'Peco' San Martín wrote:
Hello all!
I have a strange behaviour, any idea or help is welcome.
I've developed a program in Linux that by dependencies needs
/usr/lib/perl5/Net/DNS/Resolver.pm
The last release of Resolver.pm starts with a BEGIN block like follows:
/use vars qw(@ISA);
BEGIN {
for ( $^O, 'UNIX' ) {
my $class = join '::', __PACKAGE__, $_;
return @ISA = ($class) if eval "require $class;";
}
die 'failed to load platform specific resolver component';
}
/
The program works, so I created the executable to make an easier
deployment...
but I am surprised to see that it fails with the message: /failed to
load platform specific resolver component/
The workaround is replace the BEGIN by something platform dependent:
require Net::DNS::Resolver::UNIX;
@ISA = qw(Net::DNS::Resolver::UNIX);
Any idea?
Cheers,
Peco