|
From: cca.johnson on 23 Apr 2008 21:57 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"; # print the modified date of file: use File::stat; use Time::localtime; my $file = "testme.txt"; my $timestamp = ctime(stat($file)->mtime); print "...but not this way:\n $timestamp\n"; Any assistance would be appreciated,
From: J�rgen Exner on 23 Apr 2008 22:23 cca.johnson(a)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. It seems like Date::Formatter will probably do what you are looking for. jue
From: xhoster on 23 Apr 2008 22:25 cca.johnson(a)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 -- -------------------- http://NewsReader.Com/ -------------------- The costs of publication of this article were defrayed in part by the payment of page charges. This article must therefore be hereby marked advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate this fact.
From: cca.johnson on 23 Apr 2008 23:41 On Apr 23, 9:25 pm, xhos...(a)gmail.com wrote: > cca.john...(a)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,
From: Gerry Ford on 24 Apr 2008 02:34 "J�rgen Exner" <jurgenex(a)hotmail.com> wrote in message news:rerv041l3mb08vm1ga2qkim0915id8trbk(a)4ax.com... > cca.johnson(a)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. > > It seems like Date::Formatter will probably do what you are looking for. http://search.cpan.org/~stevan/Date-Formatter-0.09/lib/Date/Formatter.pm I thought I'd chase after it, as if wanting to install the module myself. I'm disappointed that ActiveState's PPM rarely has the modules I'm looking for. Maybe I don't know how to look. The authors included this caveat: For serious date/time involved work, skip my module and go straight to the DateTime project at L<http://datetime.perl.org>. Don't even waste your time with anything else. , and this link to the larger question in Perl: http://www.perl.com/pub/a/2003/03/13/datetime.html -- "Life in Lubbock, Texas, taught me two things: One is that God loves you and you're going to burn in hell. The other is that sex is the most awful, filthy thing on earth and you should save it for someone you love." ~~ Butch Hancock
|
Pages: 1 Prev: FAQ 1.11 When shouldn't I program in Perl? Next: FAQ 1.8 Is Perl difficult to learn? |