my $SORTED = \&Do_Sort; sub Return_First { return $SORTED->(@_)->[0]; } sub Return_Last { return $SORTED->(@_)->[$#{ $SORTED }]; } sub Return_Middle { return $SORTED->(@_) if @_ < 3; splice @_, -1, 1; splice @_, 0, 1; Return_Middle(@_); } sub Do_Sort { sort { $a <=> $b || $a cmp $b } @_; }