GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Class::ReturnValue(3) User Contributed Perl Documentation Class::ReturnValue(3)

Class::ReturnValue - A return-value object that lets you treat it as as a boolean, array or object

Class::ReturnValue is a "clever" return value object that can allow code calling your routine to expect: a boolean value (did it fail) or a list (what are the return values)

    sub demo {
        my $value = shift;
        my $ret = Class::ReturnValue->new();
        $ret->as_array('0', 'No results found');
    
        unless($value) {
            $ret->as_error(errno => '1',
                               message => "You didn't supply a parameter.",
                               do_backtrace => 1);
        }

        return($ret->return_value);
    }

    if (demo('foo')){ 
        print "the routine succeeded with one parameter";
    }
    if (demo()) {
        print "The routine succeeded with 0 paramters. shouldn't happen";
    } else {
        print "The routine failed with 0 parameters (as it should).";
    }


    my $return = demo();
    if ($return) {
        print "The routine succeeded with 0 paramters. shouldn't happen";
    } else {
        print "The routine failed with 0 parameters (as it should). ".
              "Stack trace:\n".
        $return->backtrace;
    }

    my @return3 = demo('foo');
    print "The routine got ".join(',',@return3).
          "when asking for demo's results as an array";


    my $return2 = demo('foo');

    unless ($return2) {
        print "The routine failed with a parameter. shouldn't happen.".
             "Stack trace:\n".
        $return2->backtrace;
    }

    my @return2_array = @{$return2}; # TODO: does this work
    my @return2_array2 = $return2->as_array;

new
Instantiate a new Class::ReturnValue object
as_array
Return the 'as_array' attribute of this object as an array.
as_array [ARRAY]
If $self is called in an array context, returns the array specified in ARRAY
as_error HASH
Turns this return-value object into an error return object. TAkes three parameters:

    message
    do_backtrace
    errno 

    'message' is a human readable error message explaining what's going on

    'do_backtrace' is a boolean. If it's true, a carp-style backtrace will be 
    stored in $self->{'backtrace'}. It defaults to true

    errno and message default to undef. errno _must_ be specified. 
    It's a numeric error number.  Any true integer value  will cause the 
    object to evaluate to false in a scalar context. At first, this may look a 
    bit counterintuitive, but it means that you can have error codes and still 
    allow simple use of your functions in a style like this:


        if ($obj->do_something) {
            print "Yay! it worked";
        } else {
            print "Sorry. there's been an error.";
        }


        as well as more complex use like this:

        my $retval = $obj->do_something;
        
        if ($retval) {
            print "Yay. we did something\n";
            my ($foo, $bar, $baz) = @{$retval};
            my $human_readable_return = $retval;
        } else {
            if ($retval->errno == 20) {
                die "Failed with error 20 (Not enough monkeys).";
            } else {
                die  $retval->backtrace; # Die and print out a backtrace 
            }
        }
    
errno
Returns the errno if there's been an error. Otherwise, return undef
error_message
If there's been an error return the error message.
backtrace
If there's been an error and we asked for a backtrace, return the backtrace. Otherwise, return undef.
error_condition
If there's been an error, return undef. Otherwise return 1

    Jesse Vincent <jesse@bestpractical.com>

    This module has, as yet, not been used in production code. I thing
    it should work, but have never benchmarked it. I have not yet used
    it extensively, though I do plan to in the not-too-distant future.
    If you have questions or comments,  please write me.

    If you need to report a bug, please send mail to 
    <bug-class-returnvalue@rt.cpan.org> or report your error on the web
    at http://rt.cpan.org/

    Copyright (c) 2002,2003,2005,2007 Jesse Vincent <jesse@bestpractical.com>
    You may use, modify, fold, spindle or mutilate this module under
    the same terms as perl itself.

    Class::ReturnValue isn't an exception handler. If it doesn't
    do what you want, you might want look at one of the exception handlers
    below:

    Error, Exception, Exceptions, Exceptions::Class

    You might also want to look at Contextual::Return, another implementation
    of the same concept as this module.

Hey! The above document had some coding errors, which are explained below:
Around line 97:
'=item' outside of any '=over'
Around line 264:
=cut found outside a pod block. Skipping to next block.
Around line 296:
You forgot a '=back' before '=head1'
2007-08-20 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.