overload.pm: Combine two loops
authorFather Chrysostomos <sprout@cpan.org>
Mon, 16 Jan 2012 17:59:23 +0000 (09:59 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 16 Jan 2012 20:51:44 +0000 (12:51 -0800)
It should go faster if we only iterate through %arg once.

lib/overload.pm

index 222eecd..64860b1 100644 (file)
@@ -30,9 +30,6 @@ sub nil {}
 sub OVERLOAD {
   $package = shift;
   my %arg = @_;
-  for (keys %arg) {
-    warnings::warnif("overload arg '$_' is invalid") unless $ops_seen{$_};
-  }
   my ($sub, $fb);
   $ {$package . "::OVERLOAD"}{dummy}++; # Register with magic by touching.
   $fb = ${$package . "::()"}; # preserve old fallback value RT#68196
@@ -41,6 +38,8 @@ sub OVERLOAD {
     if ($_ eq 'fallback') {
       $fb = $arg{$_};
     } else {
+      warnings::warnif("overload arg '$_' is invalid")
+        unless $ops_seen{$_};
       $sub = $arg{$_};
       if (not ref $sub and $sub !~ /::/) {
        $ {$package . "::(" . $_} = $sub;