openssl/util/with_fallback.pm
Richard Levitte 35c3a562c7 Refactor file writing - arrange for use of bundled Perl modules as fallback
For our own convenience, we need a mechanism to be able to fall back
on bundled Perl modules.  It's a minimal package that's called like
this:

    use with_fallback qw(Module1 Module2 ...);

For each module, it will try to require them from the system
installation, and failing that, it will temporarly add external/perl
and try to require transfer::{ModuleName}.  It requires that each
bundled Perl modules is accompanied by a small transfer module
(external/perl/transfer/ModuleName.pm in our example) that knows
exactly what to load.

Reviewed-by: Rich Salz <rsalz@openssl.org>
2016-01-22 23:12:22 +01:00

19 lines
350 B
Perl

#! /usr/bin/perl
package with_fallback;
sub import {
use File::Basename;
use File::Spec::Functions;
foreach (@_) {
eval "require $_";
if ($@) {
unshift @INC, catdir(dirname(__FILE__), "..", "external", "perl");
my $transfer = "transfer::$_";
eval "require $transfer";
shift @INC;
warn $@ if $@;
}
}
}
1;