use GSSAPI; $status = GSSAPI::Status->new(GSS_S_COMPLETE, 0); if (GSS_ERROR($status->major)) { die "a horrible death"; } if (! $status) { # another way of writing the above die "a horrible death"; } $status = $some_GSSAPI->someop($args1, etc); if ($status) { foreach ($status->generic_message, $status->specific_message) { print "GSSAPI error: $_\n"; } die "help me"; }
The generic code part of a GSSAPI::Status is composed of three subfields that can be accessed with the "GSS_CALLING_ERROR", "GSS_ROUTINE_ERROR", and "GSS_SUPPLEMENTARY_INFO" functions. The returned values can be compared against the constants whose names start with "GSS_S_" if your code wants to handle particular errors itself. The "GSS_ERROR" function returns true if and only if the given generic code contains neither a calling error nor a routine error.
When evaluated in a boolean context, a "GSSAPI::Status" object will be true if and only if the major status code is "GSS_S_COMPLETE".
When evaluated in a string contect, a "GSSAPI::Status" object will return the generic and specific messages all joined together with newlines. This may or may not make "die $status" work usefully.