From 56a29840c0b7b0c4a09243ea05400c3df8ad0823 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 11 May 2010 22:02:16 -0500 Subject: more support for IO slots --- lib/Stash/Manip.pm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'lib/Stash/Manip.pm') diff --git a/lib/Stash/Manip.pm b/lib/Stash/Manip.pm index 38177c7..944eab3 100644 --- a/lib/Stash/Manip.pm +++ b/lib/Stash/Manip.pm @@ -24,6 +24,9 @@ Manipulating stashes (Perl's symbol tables) is occasionally necessary, but incredibly messy, and easy to get wrong. This module hides all of that behind a simple API. +NOTE: Most methods in this class require a variable specification that includes +a sigil. If this sigil is absent, it is assumed to represent the IO slot. + =head1 METHODS =cut @@ -75,23 +78,23 @@ sub namespace { '@' => 'ARRAY', '%' => 'HASH', '&' => 'CODE', + '' => 'IO', ); sub _deconstruct_variable_name { my ($self, $variable) = @_; - (defined $variable) + (defined $variable && length $variable) || confess "You must pass a variable name"; my $sigil = substr($variable, 0, 1, ''); - (defined $sigil) - || confess "The variable name must include a sigil"; - - (exists $SIGIL_MAP{$sigil}) - || confess "I do not recognize that sigil '$sigil'"; - - return ($variable, $sigil, $SIGIL_MAP{$sigil}); + if (exists $SIGIL_MAP{$sigil}) { + return ($variable, $sigil, $SIGIL_MAP{$sigil}); + } + else { + return ("${sigil}${variable}", '', $SIGIL_MAP{''}); + } } } -- cgit v1.2.3-54-g00ecf