use File::Basename qw/ dirname basename /; use File::Find::Rule; my $rule = rule( file => start => '/data/input' ); while(my $path = $rule->match) { printf "%s,%s,%s\n", dirname($path), basename($path), -s $path; } #### ## do same 'use's as above printf "%s,%s,%s\n", dirname($_), basename($_), -s $_ for find( file => in => '/data/input' );