DB Transaktionen - Array Context funktioniert nicht
authorMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Fri, 17 Feb 2017 08:59:24 +0000 (09:59 +0100)
committerMartin Helmling martin.helmling@octosoft.eu <martin.helmling@octosoft.eu>
Fri, 17 Feb 2017 09:07:49 +0000 (10:07 +0100)
Innerhalb des eval{} Blockes ist für wantarray ein neuer Context,
in diesem Falle ist wantarray hier nicht definiert.
Deshalb muss dies per Variable in den eval-Block übergeben werden

SL/DB.pm

index 29d0090..79a251a 100644 (file)
--- a/SL/DB.pm
+++ b/SL/DB.pm
@@ -132,9 +132,9 @@ sub with_transaction {
   my $rv = 1;
 
   local $@;
-
+  my $return_array = wantarray;
   eval {
-    wantarray
+    $return_array
       ? $self->do_transaction(sub { @result = $code->(@args) })
       : $self->do_transaction(sub { $result = $code->(@args) });
   } or do {
@@ -150,7 +150,7 @@ sub with_transaction {
     }
   };
 
-  return wantarray ? @result : $result;
+  return $return_array ? @result : $result;
 }
 
 1;