sub id2path_new { my $id = shift or return q(); return sprintf "%03d/$2/$3", $1 if $id =~ /(.+)(...)(...)/; return join "/", "00000$id" =~ /(..)(..)(..)$/; } #### sub id2path_new { my $id = shift or return q(); $id =~ /(.+)(...)(...)/ or "00000$id" =~ /(..)(..)(..)$/; return sprintf "%0".length($3)."d/$2/$3", $1; } #### sub id2path_new { my $id = shift or return q(); sprintf "%0".($id=~/(.+)(...)(...)/?3:("00000$id"=~/(..)(..)(..)$/,2))."d/$2/$3",$1; } #### sub id2path_new { $_[0]?join"/",grep{$_}"00000$_[0]"=~/0*(..)(..)(..)$|0*(.{3,})(...)(...)$/:q(); }