/usr/share/perl5/Rex/Require.pm is in rex 1.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #
# (c) Jan Gehring <jan.gehring@gmail.com>
#
# vim: set ts=2 sw=2 tw=0:
# vim: set expandtab:
package Rex::Require;
use strict;
use warnings;
our $VERSION = '1.4.1'; # VERSION
use Carp;
require Rex::Logger;
# some code borrowed from: UNIVERSAL::require (neilb)
BEGIN { require UNIVERSAL; }
my $module_name_rx = qr/[A-Z_a-z][0-9A-Z_a-z]*(?:::[0-9A-Z_a-z]+)*/;
sub UNIVERSAL::require {
my ( $module, %option ) = @_;
$option{level} ||= 0;
my ( $caller_package, $caller_file, $caller_line ) = caller( $option{level} );
my $file = $module . ".pm";
$file =~ s/::/\//g;
# check if module is already loaded.
return eval { 1 } if $INC{$file};
my $ret = eval "CORE::require(\$file)";
if ( !$ret ) {
confess $@;
}
return $ret;
}
sub UNIVERSAL::use {
my ( $module, @imports ) = @_;
$module->require( level => 1 );
my ( $caller_package, $caller_file, $caller_line ) = caller(0);
eval "package $caller_package;\n\$module->import(\@imports);\n1;";
if ($@) {
confess $@;
}
return 1;
}
sub UNIVERSAL::is_loadable {
my ($module) = @_;
eval {
$module->require;
1;
};
if ($@) { return 0; }
return 1;
}
1;
|