summaryrefslogtreecommitdiffstats
path: root/perl-install/modules.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/modules.pm')
-rw-r--r--perl-install/modules.pm16
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);