diff options
Diffstat (limited to 'perl-install/modules.pm')
-rw-r--r-- | perl-install/modules.pm | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/perl-install/modules.pm b/perl-install/modules.pm index 552774cf7..db77932e5 100644 --- a/perl-install/modules.pm +++ b/perl-install/modules.pm @@ -172,12 +172,14 @@ sub add_probeall { sub remove_alias($) { my ($name) = @_; + remove_alias_regexp("^$name\$"); +} + +sub remove_alias_regexp($) { + my ($name) = @_; foreach (keys %conf) { - $conf{$_}{alias} && $conf{$_}{alias} eq $name or next; - delete $conf{$_}{alias}; - return 1; + delete $conf{$_}{alias} if /$name/; } - 0; } sub remove_module($) { @@ -232,7 +234,7 @@ sub mergein_conf { my ($file) = @_; my $modconfref = read_conf($file); while (my ($key, $value) = each %$modconfref) { - $conf{$key}{alias} = $value->{alias} if !exists $conf{$key}{alias}; + $conf{$key}{alias} ||= $value->{alias}; $conf{$key}{options} = $value->{options} if $value->{options}; push @{$conf{$key}{probeall} ||= []}, deref($value->{probeall}); } @@ -261,7 +263,9 @@ sub write_conf { } elsif ($conf{$alias}{$type} && $conf{$alias}{$type} ne $module) { my $v = join(' ', uniq(deref($conf{$alias}{$type}))); $_ = "$type $alias $v\n"; - } + } elsif ($type eq 'alias' && !defined $conf{$alias}{alias}) { + $_ = ''; + } } $file; my $written = read_conf($file); |