in reply to print directory contents

Your current directory is not always the same as the directory in which your script resides. Try specifiying the absolute path instead of just start, or try
use File::Spec::Functions qw( catdir rel2abs ); use File::Basename qw( basename ); my $start_dir = catdir(basename(rel2abs($0)), 'start'); open(DIR, $start_dir) ...

Also, readdir doesn't return a full path.

use File::Spec::Functions qw( catfile ); foreach (@files) { my $file = catfile($start_dir, $_); ... }