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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.