Scalar::Andand - Guarded method invocation.


Scalar-Andand documentation Contained in the Scalar-Andand distribution.

Index


Code Index:

NAME

Top

Scalar::Andand - Guarded method invocation.

VERSION

Top

Version 0.04

SYNOPSIS

Top

Scalar::Andand lets us write:

 $phone = Location->find('first', name => 'Johnson' )->andand->phone

And get a guarded method invocation or safe navigation method. This snippet performs a find on the Location class, then calls phone to the result if the result is defined. If the result is not defined, then the expression returns false without throwing an exception.

EXPORT

Top

This module doesn't export anything to your namespace, but it does add a universal method andand, which is a far graver sin.

AUTHOR

Top

Leon Timmermans, <leont at cpan.org>

BUGS

Top

You have to include the module in every package where you use the magic andand method, or else it doesn't work on undefined values.

This module contains more magic than what is responsible, don't be surprised by weird bugs.

Note that this module was intended as a proof of concept. The author has never used it in production code, nor is he planning to do so. YMMV.

Please report any bugs or feature requests to bug-scalar-andand at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Scalar-Andand. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc Scalar::Andand




You can also look for information at:

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Scalar-Andand

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Scalar-Andand

* CPAN Ratings

http://cpanratings.perl.org/d/Scalar-Andand

* Search CPAN

http://search.cpan.org/dist/Scalar-Andand

COPYRIGHT & LICENSE

Top


Scalar-Andand documentation Contained in the Scalar-Andand distribution.

package Scalar::Andand;

use 5.008;

use strict;
use warnings;
our $VERSION = '0.05';

my %args;
use Scalar::Andand::Undef;
use Scalar::Andand::Scalar;
BEGIN { %args = (SCALAR => [ 'Scalar::Andand::Scalar', 'autobox::Core::SCALAR' ], UNDEF => 'Scalar::Andand::Undef') }
use autobox::Core %args;

sub import {    ## no critic (RequireArgUnpacking)
	push @_, %args;
	goto &autobox::Core::import;
}

sub UNIVERSAL::andand {
	return shift;
}

1;

__END__