Your need sprintf not printf. This works as expected. The 1 is the true return value from printf which gets assigned to $ymd after printf has printed the string.
#!/usr/bin/perl -w use strict; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(t +ime); printf ("%04d%02d%02d",$year+1900,$mon+1,$mday); print "\n\n"; # result is 20010807 # good; exactly what was expected my $ymd = sprintf("%04d%02d%02d",$year+1900,$mon+1,$mday); print "$ymd"; print "\n\n"; # result is 20010807 my $outfile = "$ymd.summary"; print "$outfile"; print "\n\n"; # result is 20010807.summary
You can simplify and use the default behaviour for localtime and an array slice to give this:
#!/usr/bin/perl -w use strict; my ($mday,$mon,$year) = (localtime)[3..5]; my $ymd = sprintf("%04d%02d%02d",$year+1900,$mon+1,$mday); my $outfile = "$ymd.summary"; print $outfile, "\n";
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
In reply to Re: create file with current date for name
by tachyon
in thread create file with current date for name
by ybiC
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |