Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re^5: Rename unreliable on Windows

by tobyink (Abbot)
on Apr 04, 2012 at 12:06 UTC ( #963431=note: print w/replies, xml ) Need Help??

in reply to Re^4: Rename unreliable on Windows
in thread Rename unreliable on Windows

is there an easy workaround (apart from disabling the backup sw)?

You could just keep trying to rename it...

1 until rename $file1, $file2;

Of course, if a file can genuinely never be renamed, this will cause your script to keep trying forever. Better to limit to a finite number of attempts at renaming.

my $attempts; while (not rename $file1, $file2) { $attempts++; die "Could not rename file: $!" if $attempts > 7; sleep $attempts; }
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^6: Rename unreliable on Windows
by MidLifeXis (Monsignor) on Apr 04, 2012 at 12:48 UTC

    You could also throw it into a queue of items "to deal with later".


Re^6: Rename unreliable on Windows
by elef (Friar) on Apr 04, 2012 at 16:22 UTC
    Thanks. Hoping that copying is more robust than renaming, I tried this:
    unlink "rename2.txt" or die "Can't delete file: $!"; copy ("rename1.txt", "rename2.txt") or die "Can't copy file: $!"; unlink "rename1.txt" or die "Can't delete file: $!";

    Errors became less frequent, but they're still there. I'll try your suggestion. I really like the idea of sleeping increasing intervals between attempts, too.

    Edit: did the test, and the solution works. I also added some reporting to see how many extra attempts are needed for the renamings to succeed. The second attempt was sufficient every time, and it was needed ~50 times before the script got to 10000 loops. I'll implement this with 5 attempts max (just in case the backup sw spends more time on larger files) and forget about the issue. Thanks.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://963431]
shmem is bored... sending limericks to the auth log

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (12)
As of 2018-02-20 16:02 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (271 votes). Check out past polls.