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).