Do not recreate hash on every construction
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor / Trait / Method / Constructor.pm
index 0ceec12..1eceed7 100644 (file)
@@ -20,12 +20,15 @@ around '_generate_BUILDALL' => sub {
         map  { $_->init_arg() } @{ $self->_attributes() }
     );
 
-    $source .= <<"EOF";
-my \%attrs = (@attrs);
-
-my \@bad = sort grep { ! \$attrs{\$_} }  keys \%{ \$params };
+    my $MY = 'my';
+    if ($] >= 5.009004) {
+        $source .= "use feature 'state';\n";
+        $MY = 'state';
+    }
 
-if (\@bad) {
+    $source .= <<"EOF";
+$MY \$attrs = { @attrs };
+if (my \@bad = sort grep { ! \$attrs->{\$_} } keys %\$params) {
     Moose->throw_error("Found unknown attribute(s) passed to the constructor: \@bad");
 }
 EOF