sub _interval { my ($min, $max) = ( min(@_), max(@_) ); return bless [ ... ], __PACKAGE__; } Math::Interval::_interval(...) #### sub new { my $class = shift; my ($min, $max) = ( min(@_), max(@_) ); return bless [ ... ], $class; } Math::Interval->new(...)