#!/usr/bin/perl package MyClass; use strict; use warnings; use Want; sub new { my $class = shift; return bless {last_op => ''}, $class; } sub this { my $self = shift; if (@_) { $self->{this} = $_[0]; } if ( my $op = $self->{last_op} ) { $self->$op($self->{this}); } else { $self->{curr_value} = $self->{this}; } return want(qw(SCALAR REF)) ? $self : $self->{curr_value}; } sub that { my $self = shift; if (@_) { $self->{that} = $_[0]; } if ( my $op = $self->{last_op} ) { $self->$op($self->{that}); } else { $self->{curr_value} = $self->{that}; } return want(qw(SCALAR REF)) ? $self : $self->{curr_value}; } sub andand { my $self = shift; $self->{last_op} = '_andand'; return $self; } sub _andand { my ($self, $value) = @_; $self->{last_op} = ''; $self->{curr_value} = $self->{curr_value} && $value; } package main; use strict; use warnings; my $foo = MyClass->new(); $foo->this(0); $foo->that(5); print "This: ", $foo->this(), "\n"; print "That: ", $foo->that(), "\n"; my $value = $foo->this()->andand->that(); print "V: $value\n"; $value = $foo->that()->andand->this(); print "V: $value\n"; $foo->this(3); $value = $foo->this()->andand->that(); print "V: $value\n"; $value = $foo->that()->andand->this(); print "V: $value\n";
In reply to Re: Is there an andand for Perl like there is in Ruby?
by runrig
in thread Is there an andand for Perl like there is in Ruby?
by frew
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |