Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Help with number conversion

by wmono (Friar)
on Apr 03, 2002 at 05:24 UTC ( #156238=note: print w/replies, xml ) Need Help??


in reply to Help with number conversion

$number = 1; $number = "0".$number until length $number >= 3; print $number,"\n";

Hope that helps..

Replies are listed 'Best First'.
Re: Re: Help with number conversion
by Juerd (Abbot) on Apr 03, 2002 at 07:57 UTC

    $number = 1;
    $number = "0".$number until length $number >= 3;
    print $number,"\n";

    I'm sure merlyn just wanted you to know that although this works as expected, there are better alternatives. To many, "Matt Wright" is a synonym for "clumsy code that does however do what it's supposed to do" (not to be taken literally: merlyn didn't ask if you went to school with clumsy code :)).

    Your approach is directly instructing Perl to do what you want it to do. If you feel comfortable with that, you should do it that way. But often there is some efficiency in both coding and run time to be gained when you use Perl's core functions. In this case, it'd be $number = sprintf '%03d', $number;, which is approximately 2.5 times as fast.

    Learn about sprintf. It can be very confusing at first, but the %-notation is easy to get used to.

    U28geW91IGNhbiBhbGwgcm90MTMgY
    W5kIHBhY2soKS4gQnV0IGRvIHlvdS
    ByZWNvZ25pc2UgQmFzZTY0IHdoZW4
    geW91IHNlZSBpdD8gIC0tIEp1ZXJk
    

Re: Re: Help with number conversion
by crazyinsomniac (Prior) on Apr 03, 2002 at 07:39 UTC
•Re: Re: Help with number conversion
by merlyn (Sage) on Apr 03, 2002 at 05:31 UTC
    $number = "0".$number until length $number >= 3;
    Did you and Matt Wright go to school together?

    {sigh}

    -- Randal L. Schwartz, Perl hacker


    update: You know, when I first posted my comment, and the post was something Matt-Wright-ish, as I commented above, I left my vote neutral. But when it was changed to:
    You know what? merlyn wins. Forget it. I'll stop offering advice before running it past him first.
    I finally invoked a downvote. Don't post code here unless you can take open criticism, including a little ribbing and being compared to the bad-code-poster-Child.

      This is of course a job for a regex ;-)

      $number = 42; s/.*/"s||000$number|&&join'',reverse chop,chop,chop"/eieio; print;

      cheers

      tachyon

      s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

        A regex?

        $number = 42; $number = (' ' x (3 - length $number)) . $number | "000";
        Oh wait, let's not do string bit operations ;)
        $number = 42; $number = ('0' x (3 - length $number)) . $number;
        (The latter is only 50% less efficient than sprintf)

        U28geW91IGNhbiBhbGwgcm90MTMgY
        W5kIHBhY2soKS4gQnV0IGRvIHlvdS
        ByZWNvZ25pc2UgQmFzZTY0IHdoZW4
        geW91IHNlZSBpdD8gIC0tIEp1ZXJk
        

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://156238]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2017-11-20 01:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (282 votes). Check out past polls.

    Notices?