in reply to why use a coderef?

There are some subtle differences:

  1. Unless the declaration of some_subroutine was moved up, there would be a warning about an undefined subroutine. The assignment runs after the declaration (which happens on compile-time) and so no warning.
  2. if the code were using anonymous subroutines as in
    my $coderef = sub { #...do something with @_... return ($value1, $value2); };
    there would be no entry on the current package/namespace/stash. That makes a really private code.