I want to remove the time stamp from the scalar context return value of localtime(). Like you might see in the %changelog section of an RPM spec file. That is, convert this:
Thu Dec 17 15:55:52 2009
To this:
Thu Dec 17 2009
To me, it just begs to be yanked out as the 4th whitespace-delimited field. So I did this:
my $now = localtime; my @t = split /\s+/, $now; splice @t, 3, 1; $now = join ' ', @t;
But these 3 data type transitions made me wonder if I'm being ridiculously wasteful.
Just thought of this, for a comparison.
my $now = localtime; $now =~ s/(\d\d:){2}\d\d//; $now =~ s/\s{2,}/ /;
Here is the run time (1,000,000 iterations) of the s// operator solution.
real 0m2.700s user 0m2.698s sys 0m0.002s
Here is the run time of my split, splice, join solution.
real 0m4.576s user 0m4.573s sys 0m0.002s
Looks to be 1.7 times faster.
Am I missing anything?
EDIT:Oh, yeah. If I can I want this all on one line (neatly) because this part of a big hash initialization, and I'd rather not have the localtime string modification off somewhere else since it is not used anywhere else.
In reply to Using split, splice, and join to remove time from scalar context return of localtime() by jffry
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |