/usr/local/CPAN/Pipe/Pipe/Tube/Sort.pm
package Pipe::Tube::Sort;
use strict;
use warnings;
use base 'Pipe::Tube';
sub init {
my ($self, $expr) = @_;
$self->logger("Receiving the sort expression: '" . (defined $expr ? $expr : '') . "'");
$self->{expr} = $expr;
$self->{data} = [];
return $self;
}
sub run {
my ($self, @input) = @_;
push @{ $self->{data} }, @input;
return;
}
sub finish {
my ($self) = @_;
$self->logger("The sort expression: " . (defined $self->{expr} ? $self->{expr} : ''));
my $sub = $self->{expr};
if (defined $sub) {
return sort { $sub->($a, $b) } @{ $self->{data} };
} else {
return sort @{ $self->{data} };
}
}
1;