|
Posted by cca.johnson on April 23, 2008, 11:41 pm
Please log in for more thread options On Apr 23, 9:25 pm, xhos...@gmail.com wrote:
> cca.john...@gmail.com wrote:
> > I want to be able to rename a file and prepend the file's modification
> > date at the front of the file. For example:
> > with a file named testme.txt and a modification date of April 1, 2006,
> > I want the renamed file to be named 20060401-testme.txt
>
> > What I can do is get the modification date using ctime, but it I can't
> > figure out how to format the output. I am able to format the date the
> > way I like using strftime. Here is some sample code which shows the
> > output I do and do not want:
>
> > #!/usr/bin/perl -w
> > use strict ;
> > use warnings ;
> > use POSIX qw(strftime);
>
> > # print today's date YYYYMMDD:
> > my $now_time = strftime "%Y%m%d", localtime;
> > print "I want it formatted this way:\n$now_time\n";
>
> mtime and time both use seconds since the epoch, so
> it should work the same way if you just give localtime the results of
> mtime instead of letting it default to using time.
>
> my $now_time = strftime "%Y%m%d", localtime(stat($file)->mtime);
>
> Xho
After I removed use Time::localtime, this worked without error. My
guess is that there is a conflict between POSIX qw(strftime)and
Time::localtime. Here is what I have:
#!/usr/bin/perl -w
use strict ;
use warnings ;
use POSIX qw(strftime);
use File::Copy;
use File::stat;
# print today's date YYYYMMDD:
my $now_time = strftime "%Y%m%d", localtime;
print "I want it formatted this way:\n$now_time\n";
# print the modified date of file:
my $file = "testme.txt";
my $file_time = strftime "%Y%m%d", localtime(stat($file)->mtime);
print "file $file will be renamed $file_time-$file\n";
copy("$file", "$file_time-$file") or die "can't copy file: $!";
Thank you,
|