in reply to matching against failed readline doesn't warn?

The strangeness seems to be in the diamond operator. If I use a sub instead, I get a warning:
#!/usr/bin/perl -w open FOO, "< /dev/null" or die "No foo: $!\n"; #scalar(<FOO>) =~ /bar/ (rf() =~ /bar/) and print "bar\n"; sub rf { return scalar(<FOO>); }