M.Lewis wrote:
I have a need to manipulate some filenames. The files are all in a
single directory. They are currently named in the form:
01012003-Rattler.tar.gz
01162003-Rattler.tar.gz
01312003-Rattler.tar.gz
02152003-Rattler.tar.gz
These are backup files from a machine. What I will ultimately be doing
is restoring them in date order. The problem is, the file date/time
cannot be trusted in all cases (some yes). I assume 'cp' was used at
some point along the way and 'changed' the file date/times. So all I
have is the filenames to put the files in date order. I believe this
would be the proper format to do this:
20030101-Rattler.tar.gz
20030116-Rattler.tar.gz
20030131-Rattler.tar.gz
20030215-Rattler.tar.gz
I wrote a short script to do this, and it will obviously work. My
question is, what are some of the other ways to do it?
Thanks,
Mike
#!/usr/bin/perl
use strict;
use warnings;
my $string = '03102003-Rattler.tar.gz';
my @bigarray = split ( '-', $string);
my $workstring = $bigarray[0];
my @sa = split ( //, $workstring);
my $newstring =
"$sa[4]$sa[5]$sa[6]$sa[7]$sa[0]$sa[1]$sa[2]$sa[3]-$bigarray[1]";
print "Old filename = $string\n";
print "New filename = $newstring\n";
my $string = '03102003-Rattler.tar.gz';
( my $newstring = $string ) =~ s/^(\d{4})(\d{4})/$2$1/;
John
--
Those people who think they know everything are a great
annoyance to those of us who do. -- Isaac Asimov
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/