in reply to Can you make it nicer?
Note: I know that i could also write the regex using \d and the {3} quantifier, resulting in:sub id2path_new { my ($id) = @_; return '' unless $id; my $path = ''; if ($id >= 1_000_000) { $path = sprintf("%09d", $id); $path =~ s#\A(.*)(...)(...)\z#$1/$2/$3#; } else { $path = sprintf("%06d", $id); $path =~ s#\A(..)(..)(..)\z#$1/$2/$3#; } return $path; }
\A(\d*)(\d{3})(\d{3})\z In this case however, i consider the dots to be visually clearer, while having the same effect. Having two hard coded printfs is in my opinion also easier to read than first programmatically creating the sprintf format string.
|
|---|