以前から不思議だったんだけど、パスの一覧作るのに、
再帰呼び出し使うのってどっかの参考本にでも載ってるの?
普通にsplice利用すれば良いのに。

use Data::Dumper ;
use Cwd ;
sub make_list {
 my $i = 0 ;
 for ( @_ ){ $i ++ ; -d $_ and splice @_, $i, 0, sort grep !/^\./, glob "$_/*" ; }
 @_ ;
}
print Dumper [ make_list getcwd ] ;

もっと言えば、coreのFile::Find使えって話しになるけどさ。
perl -MFile::Find -MCwd -le 'find sub{ print $File::Find::name }, getcwd '