From 35c3a562c74aba6e3ac3d577a356b314a151740e Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 22 Jan 2016 12:37:31 +0100 Subject: 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 --- util/with_fallback.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 util/with_fallback.pm (limited to 'util') diff --git a/util/with_fallback.pm b/util/with_fallback.pm new file mode 100644 index 0000000000..014f355156 --- /dev/null +++ b/util/with_fallback.pm @@ -0,0 +1,19 @@ +#! /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; -- cgit v1.2.3