John W. Krahn wrote:
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/;
Thanks John and John. I hadn't even thought of a regex. That is why I
asked another way to do it.
Thanks!
--
Make sure comments and code agree.
18:15:01 up 3:19, 1 user, load average: 2.32, 1.92, 1.78
Linux Registered User #241685 http://counter.li.org
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/