use warnings; use strict; checkDir('/usr/tmp', '-w'); #or... checkDir('/usr/tmp', '-r'); sub checkDir { my ($dir, $perm) = @_; print "Dir: $dir, Perm: $perm\n"; } #### Dir: /usr/tmp, Perm: -w Dir: /usr/tmp, Perm: -r #### use warnings; use strict; my $testDir = '.'; checkDir($testDir, '-w'); checkDir($testDir, '-r'); sub checkDir { my ($dir, $perm) = @_; if (eval "$perm '$dir'") { print "Can $perm $dir\n"; } else { print "Can $perm $dir\n"; } } #### Can -w . Can -r .