Quick Navigator

Search Site

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

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  CLASS::RETURNVALUE (3)

.ds Aq ’


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 didnt supply a parameter.",
                               do_backtrace => 1);


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

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

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

    my $return2 = demo(foo);

    unless ($return2) {
        print "The routine failed with a parameter. shouldnt happen.".
             "Stack trace:\n".

    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 is a human readable error message explaining whats going on

    do_backtrace is a boolean. If its 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.
    Its 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. theres 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 <>


    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
    <> or report your error on the web


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


    Class::ReturnValue isnt an exception handler. If it doesnt
    do what you want, you might want look at one of the exception handlers

    Error, Exception, Exceptions, Exceptions::Class

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


Hey! <B>The above document had some coding errors, which are explained below:B>
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’
Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 CLASS::RETURNVALUE (3) 2007-08-20

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