From: Matt S Trout Date: Thu, 22 Oct 2009 10:09:44 +0000 (-0400) Subject: cleanup to _set_glob function X-Git-Tag: v0.003~78 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FWeb-Simple.git;a=commitdiff_plain;h=06e0b420b681530537f3bf83848033836e5918b1 cleanup to _set_glob function --- diff --git a/lib/XML/Tags.pm b/lib/XML/Tags.pm index 60ab398..78cc5d2 100644 --- a/lib/XML/Tags.pm +++ b/lib/XML/Tags.pm @@ -14,7 +14,6 @@ sub import { my $opts = shift(@args) if ref($args[0]) eq 'HASH'; my $target = $class->_find_target(0, $opts); my @tags = $class->_find_tags(@args); - $class->_setup_glob_override; my $unex = $class->_export_tags_into($target => @tags); $class->_install_unexporter($unex); $IN_SCOPE = 1; @@ -30,8 +29,6 @@ sub sanitize { } @_ } -sub _glob_glob { eval '\*CORE::GLOBAL::glob' } - sub _find_tags { shift; @_ } sub _find_target { @@ -41,12 +38,9 @@ sub _find_target { return (caller($level))[0]; } -sub _setup_glob_override { - no warnings 'redefine'; +sub _set_glob { delete ${CORE::GLOBAL::}{glob}; - *{_glob_glob()} = sub { - return \('<'.$_[0].'>'); - }; + *{eval '\*CORE::GLOBAL::glob'} = $_[0]; } sub _export_tags_into { @@ -55,13 +49,13 @@ sub _export_tags_into { no strict 'refs'; tie *{"${into}::${tag}"}, 'XML::Tags::TIEHANDLE', \"<${tag}>"; } + _set_glob(sub { \('<'.$_[0].'>'); }); return sub { foreach my $tag (@tags) { no strict 'refs'; delete ${"${into}::"}{$tag} } - delete ${CORE::GLOBAL::}{glob}; - *{_glob_glob()} = \&File::Glob::glob; + _set_glob(\&File::Glob::glob); $IN_SCOPE = 0; }; }