sub id2path_new { my $id = shift; return q() unless $id; # group of digits my $bits = length $id > 6 ? 3 : 2; # prepend with 0 digits if necessary my $id = ('0' x (3 * $bits - length $id)) . $id; my @parts = ( # leftmost part (substr $id, 0, -2 * $bits), # subparts (substr $id, -2 * $bits) =~ m{(\d{$bits})}xmsg ); return join q{/}, @parts; }