Not a problem. Just take the routine and put it into a subroutine or method:

sub convert_to_dollar_format { my $value = shift; $value += 0; # cheap error checking. You'll want something more robust return $value =~ /[^\d.]/ ? 0 : sprintf( '$%.2f', $value ); }

With that sub, you just call it as you need it and don't worry about using the return value until necessary. Of course, you'll want to customize the error checking to fit your actual needs. Note that sprintf will not print the output (that was a concern you stated), but will merely format it properly).

As for a regex solution, I wouldn't use one. Regexes are expensive in terms of performance and shouldn't be used if less expensive operations are available.

Also, the reason you may want to update the error checking is due to it returning zero for non-numeric data. This is similar to Perl's handling of scalars, but probably is going to be harder to debug. I included the "add zero" line so the routine would warn about a non-numeric argument you if you have warnings enabled.

Cheers,
Ovid

Vote for paco!

Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.


In reply to (Ovid) Re(2): Dollars and regex cents by Ovid
in thread Dollars and regex cents by higle

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.