LINUX.ORG.RU

История изменений

Исправление disarmer, (текущая версия) :

sub hash_merge{
        map {ref $_ eq 'HASH' or return warn "This is not hashref!"} @_;
        my ($h1,$h2)=@_;
        local %_=%{$h1};
        @_{keys %$h2} = values %$h2;
        #say Dumper \%_;
        while(my($k,$v)=each %$h1){
                if(ref $v eq 'HASH'){
                        $_{$k}=&hash_merge($v,$h2->{$k}) if exists $h2->{$k};
                }
        }
        return \%_;
}

Исходная версия disarmer, :

sub hash_merge{
        map {ref $_ eq 'HASH' or return warn "This is not hashref!"} @_;
        my ($h1,$h2)=@_;
        local %_=%{$h1};
        @_{keys %$h2} = values %$h2;
        #say Dumper \%_;
        while(my($k,$v)=each %$h1){
                if(ref $v eq 'HASH'){
                        $_{$k}=&hash_merge($v,$h2->{$k}) if exists $h2->{$k};
                }
        }
        return \%_;
}