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.