#!perl use strict; use warnings; use Data::Dumper; use File::Temp qw(tempfile tempdir); use Scalar::Util qw(looks_like_number openhandle); my $fh = tempfile(); #my $dh = tempdir(); opendir(my $dh, '.') || die "Can't opendir: $!"; my $string = 'path\to\file\name'; print Dumper handleRef($fh); print Dumper handleRef($dh); print Dumper handleRef($string); sub handleRef { my ($handle) = @_; my ($fh, $dataTypeHash) = @_; # Folder test (may be possible to improve)... my $folderType = eval { no warnings; telldir ($fh); }; if (looks_like_number($folderType)){ $folderType = 1; } else { $folderType = 0; } return 'FOLDERHANDLE' if ($folderType); # File test... my $handleType = openhandle($handle); return 'FILEHANDLE' if (openhandle($handle)); # Everything else... return ref \$fh; }