sub define_alias
{
     while (@_)
     {
         my ($alias,$name) = splice(@_,0,2);
         unshift(@Alias, $alias => $name);   # newer one has precedence
         # clear %Alias cache to allow overrides
         if (ref($alias)){
             for my $k (keys %Alias){
                 if (ref($alias) eq 'Regexp' && $k =~ $alias)
                 {
                     $DEBUG and warn $k;
                     delete $Alias{$k};
                 }
                 elsif (ref($alias) eq 'CODE')
                 {
                     delete $Alias{$alias->($name)};
                 }
             }
         }else{
             delete $Alias{$alias};
         }
     }
}

Reply via email to