AnyData
view release on metacpan or search on metacpan
lib/AnyData.pm view on Meta::CPAN
364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
and
$rec
=~
$self
->{parser}->{skip_pattern};
last
;
}
return
$rec
;
# return $rec if ref $rec eq 'ARRAY';
# return unless $rec;
# my @fields = $self->{parser}->read_fields($rec);
# return undef if scalar @fields == 1 and !defined $fields[0];
# return \@fields;
}
sub
update_single_row {
my
$self
=
shift
;
my
$oldrow
=
shift
;
my
$newvals
=
shift
;
my
@colnames
= @{
$self
->col_names };
my
@newrow
;
my
$requested_cols
= [];
for
my
$i
(0..
$#colnames
) {
push
@$requested_cols
,
$colnames
[
$i
]
if
defined
$newvals
->{
$colnames
[
$i
]};
$newrow
[
$i
] =
$newvals
->{
$colnames
[
$i
]};
$newrow
[
$i
] =
$oldrow
->{
$colnames
[
$i
]}
unless
defined
$newrow
[
$i
];
}
unshift
@newrow
,
$requested_cols
;
$self
->{storage}->
seek
(0,2);
$self
->push_row(
@newrow
);
return
\
@newrow
;
}
sub
update_multiple_rows {
my
$self
=
shift
;
my
$key
=
shift
;
my
$values
=
shift
;
$self
->seek_first_record;
my
@rows_to_update
;
while
(
my
$row
=
$self
->fetchrow_hashref) {
next
unless
$self
->match(
$row
,
$key
);
$self
->{parser}->{has_update_function}
?
$self
->update_single_row(
$row
,
$values
)
:
$self
->delete_single_row();
( run in 0.495 second using v1.01-cache-2.11-cpan-49f99fa48dc )