I think the filehandle functions are generally messy: Bareword file handles, indirect object syntax for print() and close(), open() modifies it's $fh argument, and my least favorite "feature": defaulting to ignoring errors, which just means you end up having to type open FH,"<","file" or die "Can't open file: $!"; every time you use open, print and close.
in reply to Perl oddities
I would prefer something like this:
my $fh = open "<","filename";
Which would also make it easier to replace a filehandle with some other object.