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. Thus IO::File, warnings, and foo::123::x_0 are all valid module names, whereas IO:: and 1foo::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 function dies.

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

"require" in perlfunc

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.