Well, you might consider a different tool for doing backups...
But maybe there is a simpler method where perl can help.
I'm not a windows officianado, but here are some ideas.
First, I don't see why the text/binary file distinction
should have anything to do with assigning file names. All
you should need to worry about is preserving the original
file extension, since this always matters for windows apps,
and if you happen to shorten any names, make sure you keep
track of the original and what it was shortened to, in case
users think their original names had some importance.
Maybe what you want is a two-stage backup process, which
would be easy to script sensibly in perl:
- for a specified list of directories, create a corresponding
set of zip files using a recent version of a good zip utility;
make sure that easy names are assigned to the zip files, and make sure that
internal subdirectory structure and file names are preserved.
- use your existing backup utility to backup the zip files.
You would probably want a nice tabulation or database as a
side-product, so when some poor shmuck loses his file, you
can figure out which zip file contains it. | [reply] |
Have a look at perlfunc:rename. It seems to work for any long filename I tried (Upto 250+chars) under NT4 and NTFS from AS 5.6.1.
Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!
| [reply] |
| [reply] [d/l] |
Others have already answered your specific question, but as a general reminder... When you don't know how to do it in Perl, but you do know how to do it at your DOS prompt (or equivalent), it's useful to know that backticks execute a system/shell command:
my $result = `ren $original_filename $new_filename`;
$result contains any output from the ren command (which is silent if it succeeds), and $? contains the numeric exit code from the command.
The command in the backticks isn't portable, of course, but since you're running into a Windows-specific problem that's unlikely to be a concern here.
$perlmonks{seattlejohn} = 'John Clyman'; | [reply] [d/l] |