The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

BusyBird::SafeData - a wrapper of a complex data structure to access its internals safely

SYNOPSIS

    use BusyBird::SafeData qw(safed);
    
    my $data = {
        foo => {
            bar => [
                0, 1, 2
            ],
            buzz => { hoge => 100 }
        }
    };
    
    my $sd = safed($data);
    
    $sd->original; ## => $data
    
    $sd->val("foo", "bar", 1);              ## => 1
    $sd->val("foo", "buzz", "FOO");         ## => undef
    $sd->val("foo", "quux", "hoge");        ## => undef (and no autovivification)
    $sd->val("foo", "bar", "FOO");          ## => undef (and no exception thrown)
    $sd->val("foo", "buzz", "hoge", "FOO"); ## => undef (and no exception thrown)
    
    $sd->array("foo", "bar");    ## => (0, 1, 2)
    $sd->array("foo", "buzz");   ## => ()
    $sd->array("foo", "bar", 1); ## => ()

DESCRIPTION

BusyBird::SafeData is a wrapper around a complex data structure to provide a safe way to access its internal data.

EXPORTABLE FUNCTIONS

The following function is exported only by request.

$sd = safed($data)

Same as BusyBird::SafeData->new($data).

CLASS METHODS

$sd = BusyBird::SafeData->new($data)

The constructor.

$data is any scalar. $sd wraps the given $data.

OBJECT METHODS

$data = $sd->original()

Returns the original $data that $sd wraps.

$val = $sd->val(@path)

Return the value specified by @path from $sd.

@path is a list of indices/keys from the root of the $sd down to the value you want. If it cannot traverse @path completely, it returns undef.

This method never autovivifies anything in $sd.

@vals = $sd->array(@path)

Return the list of values in the array-ref specified by @path. If it cannot traverse @path completely, it returns an empty list. If the value at the @path is not an array-ref, it returns an empty list.

AUTHOR

Toshio Ito <toshioito [at] cpan.org>