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 )