On Thu, Aug 5, 2010 at 00:16, HACKER Nora <nora.hac...@stgkk.at> wrote:
> Hi,
>
> Additional noob question: What would be wrong with
>
>        $version = '0'.$version;
snip

Do you always want one 0 in front of version?  What if the version is
9?  Shouldn't it be "009" then?  You could write:

    #version should be three characters long and padded with 0s
    if ($version < 100) {
        if ($version < 10) {
            $version = "00$version";
        } else {
            $version = "0$version";
        }
    }

Or you could write:

    #version should be three characters long and padded with 0s
    $version = sprintf "%03d", $version;

Now, imagine we are two years in the future and your boss comes to you
and says that the version field is changing from a three character
field to a five character field.  Which change would you rather make:

    #version should be five characters long and padded with 0s
    if ($version < 10_000) {
        if ($version < 1_000) {
            if ($version < 100) {
                if ($version < 10) {
                    $version = "0000$version";
                } else {
                    $version = "000$version";
                }
            } else {
                $version = "00$version";
            }
        } else {
            $version = "0$version";
        }
    }

or

    #version should be five characters long and padded with 0s
    $version = sprintf "%05d", $version;

Which do you think has a higher chance of a typo or other subtle bug
not being caught in testing?

-- 
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to