in reply to Re: Re: RFC: Transactions.pm
in thread RFC: Transactions.pm
To use it you then have to sayuse Exporter::Tidy default => [ qw(transaction select_handle commit ro +llback) ]; sub select_handle { require Carp; Carp::croak("Can't select handle outside transaction"); } sub _cant_change { require Carp; Carp::croak("Can't change handle during transaction"); } sub transaction (&) { my ($block) = @_; my ($caller, $handle); my $caller = caller(); local *{"${caller}::select_handle"} = sub { $handle = shift; *{"${caller}::select_handle"} = \&_cant_change; }; # ... }
which allows to use the module for as many handles even within the same package as you like. You can even nest transactions with no adverse effects.transaction { select_handle($dhb); # ... };
Makeshifts last the longest.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re^3: RFC: Transactions.pm
by Juerd (Abbot) on Apr 28, 2003 at 11:15 UTC | |
by Aristotle (Chancellor) on Apr 28, 2003 at 11:25 UTC |