1 package Devel::REPL::Plugin::FindVariable;
3 use Devel::REPL::Plugin;
4 use namespace::clean -except => [ 'meta' ];
7 my ($self, $name) = @_;
9 return \$self if $name eq '$_REPL';
11 # XXX: this code needs to live in LexEnv
12 if ($self->can('lexical_environment')) {
13 return \( $self->lexical_environment->get_context('_')->{$name} )
14 if exists $self->lexical_environment->get_context('_')->{$name};
17 my $sigil = $name =~ s/^([\$\@\%\&\*])// ? $1 : '';
19 my $default_package = $self->can('current_package')
20 ? $self->current_package
22 my $package = $name =~ s/^(.*)(::|')// ? $1 : $default_package;
24 my $meta = Class::MOP::Class->initialize($package);
26 return unless $meta->has_package_symbol("$sigil$name");
27 $meta->get_package_symbol("$sigil$name");
36 Devel::REPL::Plugin::FindVariable - Finds variables by name
40 Shawn M Moore, C<< <sartak at gmail dot com> >>