Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Can you make it nicer?

by LanX (Canon)
on Nov 18, 2013 at 22:29 UTC ( #1063215=note: print w/ replies, xml ) Need Help??


in reply to Can you make it nicer?

well I'm not too convinced about the cases >= 1e10 ... (shouldn't bugs be catched???)

use strict; use warnings; sub id2p_choroba { my $id = shift or return q(); my $chunk_length = length $id > 6 ? 3 : 2; $id = sprintf '%0' . ($chunk_length * 3) . 'd', $id; my $chunk = ".{$chunk_length}"; my $path = join '/', $id =~ / ^ (.*) ($chunk) ($chunk) $ /xg; return $path; } sub id2p_lanx { my $id = shift or return q(); my ($chunk,$len) = (length $id > 6 ) ? (3,9) : (2,6); my $norm = sprintf "%0${len}d", $id; my $path = join "/", ( $norm =~ m/ ^ (-?\d+) (\d{$chunk}) (\d{$chunk}) $ /x ); # $path ||= '-00/000/001'; # this weirdness is needed if '-?' is mi +ssing return $path; } use Test::More tests => 23; is(id2p_lanx($_), id2p_choroba($_), "id=$_") for q(), 0, 1, 9, 10, 99, 100, 999, 1000, 9999, 10000, 99999, 100000, 999999, 1e6, 1e7-1, 1e7, 1e8-1, 1e8, 1e9, 1e10, 1e11, 1e12;

update

hmm ... well ... surprisingly now after some modifications my code looks a lot like yours! ;-)

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re: Can you make it nicer?
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1063215]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2014-07-26 08:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (175 votes), past polls