You have I<no idea> how often that would have been useful.  It's a great
> exception safety mechanism... like C++'s "resource aquisition is
> initialization" thingy, but without having to write a class for every
> variable.

Have you already forgotten KEEP and UNDO (that we introduced in A4/E4):

   our $foo = 0;
  
   sub do_something
   {
     KEEP { $foo = $foo + 1 }
     commit();
   }
  
   sub commit
   {
     fail if rand < 0.3;
   }
  
   for 1..10
   {
     try { do_something() }
   }
  
   print "$foo\n"; # expect a value of around 7


;-)

Damian

Reply via email to