NAME
Module::Runtime - runtime module handling
SYNOPSIS
use Module::Runtime qw(is_valid_module_name require_module
is_valid_module_spec compose_module_name);
$ok = is_valid_module_name($ARGV[0]);
require_module($ARGV[0]);
$ok = is_valid_module_spec("Standard::Prefix", $ARGV[0]);
$module_name = compose_module_name("Standard::Prefix",
$ARGV[0]);
DESCRIPTION
The functions exported by this module deal with runtime handling of Perl modules, which are normally handled at compile time.
FUNCTIONS
is_valid_module_name(STRING)
-
This tests whether a string is a valid Perl module name, i.e., has valid bareword syntax. The rule for this, precisely, is: the string must consist of one or more segments separated by
::
; each segment must consist of one or more identifier characters (alphanumerics plus "_"); the first character of the string must not be a digit. ThusIO::File
,warnings
, andfoo::123::x_0
are all valid module names, whereasIO::
and1foo::bar
are not.Note that
'
separators are not permitted by this function. require_module(NAME)
-
This is essentially the bareword form of
require
, in runtime form. The NAME is a string, which should be a valid module name (one or more::
-separated segments). If it is not a valid name, the functiondie
s.The module specified by NAME is loaded, if it hasn't been already, in the manner of the bareword form of
require
. That means that a search through@INC
is performed, and a byte-compiled form of the module will be used if available. is_valid_module_spec(PREFIX, SPEC)
-
Tests whether SPEC is valid input for
compose_module_name()
. See below for what that entails. Whether a PREFIX is supplied affects the validity of SPEC, but the exact value of the prefix is unimportant, so this function treats PREFIX as a boolean. compose_module_name(PREFIX, SPEC)
-
This function is intended to make it more convenient for a user to specify a Perl module name at runtime. Users have greater need for abbreviations and context-sensitivity than programmers, and Perl module names get a little unwieldy. SPEC is what the user specifies, and this function translates it into a module name in standard form, which it returns.
SPEC has syntax approximately that of a standard module name: it should consist of one or more name segments, each of which consists of one or more identifier characters. However,
/
is permitted as a separator, in addition to the standard::
. The two separators are entirely interchangeable.Additionally, if PREFIX is not
undef
then it must be a module name in standard form, and it is prefixed to the user-specified name. The user can inhibit the prefix addition by starting SPEC with a separator (either/
or::
).
SEE ALSO
AUTHOR
Andrew Main (Zefram) <zefram@fysh.org>
COPYRIGHT
Copyright (C) 2004 Andrew Main (Zefram) <zefram@fysh.org>
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.