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;h=c55c8e3eef18158f8680c72f66208cca92fd8807;hp=ef6314a9e42a568eda071eee963c90b641acffb4;hb=9d2a4940f5958d82828272364ef754e9290b6113;hpb=30b459d4fbeb6f2406a3013c7cbcc46a6d0ccf0d diff --git a/lib/Devel/REPL/Plugin/FindVariable.pm b/lib/Devel/REPL/Plugin/FindVariable.pm index ef6314a..c55c8e3 100644 --- a/lib/Devel/REPL/Plugin/FindVariable.pm +++ b/lib/Devel/REPL/Plugin/FindVariable.pm @@ -1,11 +1,18 @@ +use strict; +use warnings; package Devel::REPL::Plugin::FindVariable; +# ABSTRACT: Finds variables by name -use Moose::Role; -use namespace::clean -except => [ 'meta' ]; +our $VERSION = '1.003027'; + +use Devel::REPL::Plugin; +use namespace::autoclean; sub find_variable { my ($self, $name) = @_; + return \$self if $name eq '$_REPL'; + # XXX: this code needs to live in LexEnv if ($self->can('lexical_environment')) { return \( $self->lexical_environment->get_context('_')->{$name} ) @@ -21,7 +28,8 @@ sub find_variable { my $meta = Class::MOP::Class->initialize($package); - return unless $meta->has_package_symbol("$sigil$name"); + # Class::MOP::Package::has_package_symbol method *requires* a sigil + return unless length($sigil) and $meta->has_package_symbol("$sigil$name"); $meta->get_package_symbol("$sigil$name"); } @@ -29,13 +37,10 @@ sub find_variable { __END__ -=head1 NAME - -Devel::REPL::Plugin::FindVariable - Finds variables by name +=pod =head1 AUTHOR Shawn M Moore, C<< >> =cut -