NAME Sub::Lib - Stuff sub-routines into a run-time namespace. Because. Reasons. SYNOPSIS use Sub::Lib; # create a library my $lib = Sub::Lib->new({ 'log' => sub {print join(' ', localtime. ':', @_), "\n"}, }); # add methods $lib->('info', sub {$lib->('log')->('info:', @_)}); $lib->('warn', sub {$lib->('log')->('warn:', @_)}); # call them directly $lib->('info')->('This is for information'); # or via some sugar $lib->run('warn', 'This is for warnings'); # or via some oo sugar $lib->('method', sub {my ($self, @args) = @_; $self->run(@args);}); $lib->call('method', $lib, 'info', "Have you seen? Oh I've seen."); # cheeseburger { my $sub = $lib->has('warn'); $sub->("I can has.") if $sub; } # scan the library $lib->('info')->('installed subs:', join(', ', keys %{$lib->()})); DESCRIPTION Sub::Lib allows you to store sub-routines into a common library which can then passed around as a variable. It's a run-time namespace. USAGE "new([HASHREF | LIST])" Creates a library object and initializes it with entries that may be passed in as either a "HASH" reference or "LIST" of key-value pairs. The object created is itself a sub-routine that can be called directly in order to run sub-routines stored in the library: $lib->('sub-routine name goes here')->(qw(sub routine args go here)); Additional sub-routines may be added by providing a "CODE" reference: $lib->('a new sub-routine', sub { # code goes here }); If no arguments are passed, the internal library is returned: my $_lib = $lib->(); "has($name)" Returns the sub-routine installed in the library identified by $name or undef if it does not exist. "run($name, [LIST])" Runs the sub-routine stored in the library identified by $name. An exception will be thrown if no sub-routine by that name can be found. Any additional arguments are passed to the sub-routine. "call($object, $name, [LIST])" Calls the sub-routine stored in the library identified by $name as a method to the object in $object. This is similar to "run()" above but uses Perl's object semantics. Additional arguments are passed to the method. AUTHOR jason hord LICENSE This software is information. It is subject only to local laws of physics.