my $obj = Foo->new( sort => 1); ... while (my $val = $obj->next) { #### if ($self->{sort}) { @out = (ref($self->{sort}) eq 'CODE') ? (sort {&{$self->{sort}}($a,$b)} @out) : (sort @out); }