DBD-XBase
view release on metacpan or search on metacpan
lib/XBase.pm view on Meta::CPAN
622623624625626627628629630631632633634635636637638639640641642# Write record, fields are specified as hash, unspecified are set to
# undef/empty
sub
set_record_hash {
my
(
$self
,
$num
,
%data
) =
@_
;
$self
->NullError();
$self
->set_record(
$num
,
map
{
$data
{
$_
} }
$self
->field_names );
}
# Write record, fields specified as hash, unspecified will be
# unchanged
sub
update_record_hash {
my
(
$self
,
$num
) = (
shift
,
shift
);
$self
->NullError();
my
%olddata
=
$self
->get_record_hash(
$num
);
return
unless
%olddata
;
$self
->set_record_hash(
$num
,
%olddata
,
@_
);
}
# Actually write the data (calling XBase::Base::write_record) and keep
# the overall structure of the file correct;
lib/XBase.pm view on Meta::CPAN
658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
$self
->NullError();
$self
->write_record(
$num
,
"*"
);
}
sub
undelete_record {
my
(
$self
,
$num
) =
@_
;
$self
->NullError();
$self
->write_record(
$num
,
" "
);
}
# Update the last change date
sub
update_last_change {
my
$self
=
shift
;
return
1
if
defined
$self
->{
'updated_today'
};
my
(
$y
,
$m
,
$d
) = (
localtime
)[5, 4, 3];
$m
++;
$y
-= 100
if
$y
>= 100;
$self
->write_to(1,
pack
"C3"
, (
$y
,
$m
,
$d
)) or
return
;
$self
->{
'updated_today'
} = 1;
}
# Update the number of records
sub
update_last_record {
my
(
$self
,
$last
) =
@_
;
$last
++;
$self
->write_to(4,
pack
"V"
,
$last
);
$self
->{
'num_rec'
} =
$last
;
}
# Creating new dbf file
sub
create {
XBase->NullError();
my
$class
=
shift
;
( run in 1.065 second using v1.01-cache-2.11-cpan-49f99fa48dc )