Data-Direct
view release on metacpan or search on metacpan
my $ref = $bind->{$col};
$$ref = $_ if (ref($ref));
####
## Load self
$self->{$col} = $_;
}
1;
}
sub addnew {
my $self = shift;
my $rs = $self->{' recs'};
my $fields = $self->{' fields'};
my $cursor = $self->{' cursor'};
####
## Create an empty record
my $new = [map {undef;} @$fields];
####
## Add it
splice(@$rs, $cursor, 0, $new);
$self->fetch($cursor);
}
sub setbookmark {
my ($self, $name) = @_;
$self->{' bookmarks'}->{$name} = $self->cursor;
}
sub gotobookmark {
my ($self, $name) = @_;
$self->fetch($self->{' bookmarks'}->{$name});
}
sub delete {
my $self = shift;
my $where = $self->cursor;
return if ($self->{' zap'}->[$where]);
$self->{' zap'}->[$where] = 1;
$self->{' dels'}++;
}
sub undelete {
my $self = shift;
my $where = $self->cursor;
return unless ($self->{' zap'}->[$where]);
$self->{' zap'}->[$where] = undef;
$self->{' dels'}--;
}
sub isdeleted {
my $self = shift;
$self->{' zap'}->[$self->cursor];
}
sub update {
my $self = shift;
my $fields = $self->{' fields'};
my @ary;
my $bind = $self->{' binding'};
####
## Retrieve bound variables
foreach (keys %$bind) {
$self->{$_} = ${$bind->{$_}};
}
####
## Retrieve row
foreach (@$fields) {
push(@ary, $self->{$_});
}
####
## Put
my $rs = $self->{' recs'};
$rs->[$self->cursor] = \@ary;
}
sub next {
my $self = shift;
$self->fetch($self->cursor + 1);
}
sub back {
my $self = shift;
$self->fetch($self->cursor - 1);
}
sub bof {
my $self = shift;
$self->cursor <= 0;
}
sub eof {
my $self = shift;
$self->cursor >= $self->recs;
}
sub fields {
my $self = shift;
my $ref = $self->{' fields'};
@$ref;
}
sub spawn {
require Text::ParseWords;
my ($self, $cmd, $pack, $unpack) = @_;
####
## Find editor, unless a different command requested
$cmd = $ENV{'EDITOR'} || 'vi' unless ($cmd);
####
( run in 0.505 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )