Next | Trivial Utilities | 69 |
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 © 2012 M. J. Dominus |