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

    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/ in our example) that knows
exactly what to load.

Reviewed-by: Rich Salz <>
Richard Levitte 7 years ago
parent 291e94df90
commit 35c3a562c7

@ -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 $@;