in reply to Reading the last character of a file and/or line.

That's not how eof works. Did you read the docs? It takes a filehandle as an argument and returns TRUE if the next read on the filehandle will return end of file.

It does *not* take a character as an argument and search for that character.

Your friend was right--you're going to have to use seek and read. Try

seek FH, -1, 2; read FH, $char, 1; if ($char eq "#") { ...
Of course, if the last character of your file is actually a carriage return, this won't work; in that case, you'll need
seek FH, -2, 2;