Array-Assign
view release on metacpan or search on metacpan
lib/Array/Assign.pm view on Meta::CPAN
my ($self,$source,%fields) = @_;
&arry_extract_s($source, $self, %fields);
}
sub extract_i {
shift;
goto &arry_extract_i;
}
sub arry_assign_s(\@$%) {
my ($target,$mapping,%assignments) = @_;
while (my ($name,$value) = each %assignments) {
my $idx = $mapping->{$name};
die("Unknown name '$name'") unless defined $idx;
$target->[$idx] = $value;
}
$target;
}
sub arry_assign_i(\@%)
{
my ($target,%mappings) = @_;
_idx_sanity_check(%mappings);
@{$target}[keys %mappings] = values %mappings;
}
sub arry_extract_i(\@%)
{
my ($source,%targets) = @_;
_idx_sanity_check(%targets);
while ( my ($idx,$ref) = each %targets) {
$$ref = $source->[$idx];
}
}
sub arry_extract_s(\@$%) {
my ($source,$mappings,%targets) = @_;
while (my ($name,$ref) = each %targets) {
my $idx = $mappings->{$name};
if(!defined $idx) {
die("unknown parameter '$name'");
}
$$ref = $source->[$idx];
}
}
( run in 0.288 second using v1.01-cache-2.11-cpan-65fba6d93b7 )