package Project::IO::Blob; use strict; use IO::Scalar; use vars qw($VERSION $sth @ISA); $VERSION = '0.1'; use DBI; use Carp qw(confess croak); @ISA = qw(IO::Scalar); sub new { my $class = shift; my $opts = shift; my $mode = $opts->{'mode'}; my $dbh = $opts->{'dbh'}; my $data = $opts->{'data'}; my $ID = $opts->{'ID'}; # Bless you my child my $self = IO::Scalar->new ($data); bless $self, $class; *$self->{'io_blob_mode'} = $mode; *$self->{'io_blob_dbh'} = $dbh; *$self->{'io_blob_ID'} = $ID; return $self; } sub close { my $self = shift; # Flush to db if (*$self->{'io_blob_dbh'} && defined(*$self->{'io_blob_ID'})) { my $sql = "update FILES set data = ? where ID = ?"; $sth ||= *$self->{'io_blob_dbh'}->prepare ($sql); $sth->execute (${$self->sref}, *$self->{'io_blob_ID'}); delete *$self->{'io_blob_dbh'}; } return 1; } 1; __END__