my $result = $obj->processor_1->processor_2($argument)->processor_3;
####
#!/usr/bin/perl
use List::Util qw(min max);
use Data::Dumper;
my $ary = [12,3,4,5,7,15,8];
my $obj = bless [ $ary, {} ], __PACKAGE__;
sub count {
$_[0]->[1]->{count} = @{$_[0]->[0]};
$_[0];
}
sub min_max {
$_[0]->[1]->{min} = min @{$_[0]->[0]};
$_[0]->[1]->{max} = max @{$_[0]->[0]};
$_[0];
}
sub esrever {
$_[0]->[1]->{esrever} = [ reverse @{$_[0]->[0]} ];
$_[0];
}
sub sort_inline {
@{$_[0]->[0]} = sort {$a<=>$b} @{$_[0]->[0]};
$_[0];
}
sub append_stuff_inline {
$_ .= $_[1] for @{$_[0]->[0]};
$_[0];
}
my $result = $obj->min_max->append_stuff_inline(".foo")->count->esrever->sort_inline;
print Dumper($result);
__END__
$VAR1 = bless( [
[
'3.foo',
'4.foo',
'5.foo',
'7.foo',
'8.foo',
'12.foo',
'15.foo'
],
{
'min' => 3,
'max' => 15,
'esrever' => [
'8.foo',
'15.foo',
'7.foo',
'5.foo',
'4.foo',
'3.foo',
'12.foo'
],
'count' => 7
}
], 'main' );
####
my @chain = qw(min_max count sort_inline esrever);
my ($result) = map { $obj->$_ } @chain;