I think
glob and
readline are great at specifying exactly what you are doing, and both are resistant to casual errors, especially when your glob and filehandle can look so close:
my $line = <$fh>; # Filehandle?
my $file = <*fs>; # Glob?
Much better to be specific, like you say:
my $line = $fh->readline(); # Filehandle!
my ($file) = glob("*fs"); # Glob!
The angle brackets and the whole DWIM thing are for "programmer efficiency" and not necessarily "program clarity". In some cases, you would want to avoid them entirely.