| Next | Welcome to my ~/bin | 61 | 
Now we have %new_number, which maps the old message numbers to new ones
Now it's just a matter of renaming files appropriately
 
        for my $m (keys %new_number) {
          delete $new_number{$m} if $new_number{$m} == $m;
        }
 
        while (%new_number) {
          my ($cur) = keys %new_number;
          my @chain;
          do {
            push @chain, $cur;
            $cur = delete $new_number{$cur};
          } while $cur != $chain[0];
          print STDERR "Chain: (@chain)\n" if $VERBOSE;
 
          my ($prev, @rest) = reverse @chain;
          my $TMP = "$prev.TMP";
          rename("$dir/$prev", "$dir/$TMP") or die "$prev => $TMP: $!";
          for my $cur (@rest) {
            rename("$dir/$cur", "$dir/$prev") or die "$cur => $prev: $!";
            $prev = $cur;
          }
          rename("$dir/$TMP", "$dir/$prev")  or die "$TMP => $prev: $!";
        }
| Next | Menu |  | Copyright © 2005 M. J. Dominus |