http://www.perlmonks.org?node_id=1063291


in reply to Can you make it nicer?

Or this?

sub id2path_new { my $id = shift or return q(); return sprintf "%03d/$2/$3", $1 if $id =~ /(.+)(...)(...)/; return join "/", "00000$id" =~ /(..)(..)(..)$/; }

Update: Changed the last line, was return sprintf "%02d/%02d/%02d", "00000$id" =~ /(..)(..)(..)$/;.

Update: Another variation:

sub id2path_new { my $id = shift or return q(); $id =~ /(.+)(...)(...)/ or "00000$id" =~ /(..)(..)(..)$/; return sprintf "%0".length($3)."d/$2/$3", $1; }

Update: ...and close to obfuscation...

sub id2path_new { my $id = shift or return q(); sprintf "%0".($id=~/(.+)(...)(...)/?3:("00000$id"=~/(..)(..)(..)$/ +,2))."d/$2/$3",$1; }

I am getting carried away, so here is yet another one:

sub id2path_new { $_[0]?join"/",grep{$_}"00000$_[0]"=~/0*(..)(..)(..)$|0*(.{3,})(... +)(...)$/:q(); }