Yes, it doesn't seem hard at all does it? (:
It includes a description of what was being attempted ("open", though I'd probably opt for metioning that "read" access is what was required -- though I can understand not wanting to confuse people into thinking it was a read operation that failed while keeping the message short), the input data to the operation (the name of the file), and the correct error code indicating why it failed ($! in this case).
Unfortunately, that still makes it above average in my experience. ):
(who doesn't like error messages a la mode)