NAME Sub::Spec::ByURI - Refer to module/sub/spec/sub call via URI string VERSION version 0.01 SYNOPSIS use Sub::Spec::ByURI; # refer to local subroutine my $lsub = Sub::Spec::ByURI->new("pm://Mod::SubMod::func"); # refer to remote subroutine my $rsub = Sub::Spec::ByURI->new("http://HOST/api/MOD/SUBMOD/FUNC"); # get URI components print $lsub->module; # Mod::SubMod print $rsub->sub; # FUNC # get subroutine's spec my $spec = $lsub->spec; # call subroutine my $res = $rsub->call(arg1=>'foo', arg2=>'bar'); # refer to a module my $mod = Sub::Spec::ByURI->new("http://HOST/api/MOD/"); # list subroutines my $subs = $mod->list_subs; DESCRIPTION This module lets you create an object that can represent a remote or local module/subroutine/spec/subroutine call. This module is basically a convenience so that we can represent those things using a string (URI), e.g. from a command-line or inside another URI/URL. Each scheme is handled by Sub::Spec::ByURI::, e.g. Sub::Spec::ByURI::pm for local Perl modules/subroutines, Sub::Spec::ByURI::http for remote subroutines over HTTP. METHODS new(STR) => OBJ Create a new object from URI string. Will die if URI can't be parsed (e.g. unknown scheme or bad syntax). $s->module() => STR Get the module name, or undef if not specified in URI. $s->sub() => STR Get the subroutine name, or undef if not specified in URI. $s->args() => HASHREF Get the arguments, or empty hash if none are specified in URI. $s->list_subs() => ARRAYREF Try to list subroutines in a module. URI must specify module. Will die if fail to retrieve, e.g. can't require module (for local modules) or connection failure (for remote modules). $s->spec() => HASHREF Try to get spec for subroutine. URI must specify module and subroutine name. $s->call(%args) => RESULT Try to call subroutine. URI must specify module and subroutine name. Will die if failure happens. SEE ALSO Sub::Spec Sub::Spec::HTTP AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2011 by Steven Haryanto. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.