use strict; use warnings; package DBIx::Poggy::Error; my @fields = qw(err errstr state); sub new { my $proto = shift; my $dbh = shift || 'DBI'; my $self = bless {}, ref($proto) || $proto; foreach my $f ( @fields ) { $self->{$f} = $dbh->$f(); } return $self; } foreach my $f ( @fields ) { no strict 'refs'; *{$f} = sub { return $_[0]->{$f} }; } 1;