empty is not a non-digit character “\D”
empty is not a digit character either “\d”
The wrong way to do it:
my $f;
$check = ($f =~ m/\D/ ) ? 'non-digit character' : 'assume digit';
The correct way to do it:
my $f;
$check = ($f =~ m/\d/ ) ? 'digit character' : 'assume non-digit';
References:
$ perldoc perlretut
$ perldoc perlre