X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=blobdiff_plain;f=lib%2FDevel%2FREPL%2FPlugin%2FFindVariable.pm;fp=lib%2FDevel%2FREPL%2FPlugin%2FFindVariable.pm;h=2b357552929d00679990ed44117e23b0bad66a8a;hp=0000000000000000000000000000000000000000;hb=e93892cd24b9c3a90f80dd4445043513b05211a1;hpb=7b380d09c1f004fdca29f448531df266fc690f81 diff --git a/lib/Devel/REPL/Plugin/FindVariable.pm b/lib/Devel/REPL/Plugin/FindVariable.pm new file mode 100644 index 0000000..2b35755 --- /dev/null +++ b/lib/Devel/REPL/Plugin/FindVariable.pm @@ -0,0 +1,23 @@ +package Devel::REPL::Plugin::FindVariable; + +use Moose::Role; +use namespace::clean -except => [ 'meta' ]; + +sub find_variable { + my ($self, $name) = @_; + + my $sigil = $name =~ s/^([\$\@\%\&\*])// ? $1 : ''; + + my $default_package = $self->can('current_package') + ? $self->current_package + : 'main'; + my $package = $name =~ s/^(.*)(::|')// ? $1 : $default_package; + + my $meta = Class::MOP::Class->initialize($package); + + return unless $meta->has_package_symbol("$sigil$name"); + $meta->get_package_symbol("$sigil$name"); +} + +1; +