| Mrequire documentation | Contained in the Mrequire distribution. |
Mrequire - require on Perl extensions at run time
require Mrequire;
my $class = ('Foo::Bar', 'Bar::Baz')[int(rand + .5)];
Mrequire::mrequire($class);
&Mrequire::new($class, $arg1, $arg2, ...);
use Mrequire qw(mrequire);
mrequire(...)
Mrequire can be used to dynamically load Perl extensions at run time. This becomes necessary if the decision of what kind of module you want to use (or is available at all) is made at run time.
In addition you can call constructor-like functions (which assume the package name as their first argument, see pertoot(1) for details) of dynamically loaded modules via Mrequire.
Does a require on package $class. If a respective library file
cannot be loaded the process dies.
Calls function constructor in package $class. It is assumed that
constructor expects the package name as a first argument.
Yes. Please let me know!
perl(1), perltoot(1).
Norbert Gövert <goevert@ls6.cs.uni-dortmund.de>
Copyright (c) 2003 Norbert Gövert. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Mrequire documentation | Contained in the Mrequire distribution. |
######################### -*- Mode: Perl -*- ######################### ## ## File : Mrequire.pm ## ## Author : Norbert Goevert ## Created On : Fri Oct 16 13:13:11 1998 ## Last Modified : Time-stamp: <2003-12-08 17:01:35 goevert> ## ## Description : require on Perl extensions at run time ## ## $Id: Mrequire.pm,v 1.6 2003/12/08 16:19:06 goevert Exp $ ## ###################################################################### use strict; ## ################################################################### ## package Mrequire ## ################################################################### package Mrequire; use Exporter; use Carp; use vars qw($VERSION @ISA @EXPORT_OK); '$Name: release_0_6 $ 0_0' =~ /(\d+)[-_](\d+)/; $VERSION = sprintf '%d.%03d', $1, $2; @ISA =qw(Exporter); @EXPORT_OK = qw(mrequire); ## public ############################################################ sub mrequire ($ ) { my $file = shift; $file =~ s!::!/!g; $file .= '.pm'; my $result; eval { $result = require $file }; if ($@) { chomp $@; croak $@; } return $result; } ## private ########################################################### sub AUTOLOAD { my $func = $Mrequire::AUTOLOAD; $func =~ s/.*:://; my $class = $_[0]; $class .= '::' . $func; no strict 'refs'; return &$class(@_); } 1; __END__ ## ################################################################### ## pod ## ###################################################################