Mini $RemoveSubs refactoring: less loops, less concat
Olivier Mengué [Sun, 8 May 2011 13:54:27 +0000 (15:54 +0200)]
Small refactoring in $RemoveSubs in the cleanup of the GLOB entry:
- grep for undefined symbols just once
- less string concatenation

lib/namespace/clean.pm

index 6afa1d8..57d96cb 100644 (file)
@@ -166,14 +166,15 @@ my $RemoveSubs = sub {
             }
         }
 
-        my ($scalar, $array, $hash, $io) = map {
-            $cleanee_stash->get_symbol($_ . $f)
+        my @symbols = map {
+            my $name = $_ . $f;
+            my $def = $cleanee_stash->get_symbol($name);
+            defined($def) ? [$name, $def] : ()
         } '$', '@', '%', '';
+
         $cleanee_stash->remove_glob($f);
-        for my $var (['$', $scalar], ['@', $array], ['%', $hash], ['', $io]) {
-            next unless defined $var->[1];
-            $cleanee_stash->add_symbol($var->[0] . $f, $var->[1]);
-        }
+
+        $cleanee_stash->add_symbol(@$_) for @symbols;
     }
 };