compare Sub::Install/Data::Util/ExportTo for installing subroutine
To install subroutine, you can use Data::Util, Sub::Install or ExportTo.
Rate sub_install export_to data_util_pp data_util sub_install 17980/s -- -65% -83% -90% export_to 51200/s 185% -- -50% -71% data_util_pp 103357/s 475% 102% -- -42% data_util 177535/s 887% 247% 72% --
Code.
#!/usr/bin/perl use strict; use warnings; use Util::All -benchmark; use Data::Util qw/install_subroutine/; use Sub::Install; use ExportTo; sub hello {"Hello!\n"} sub goodby {"Goodby!\n"} my $i = 0 ; cmpthese(-1, { data_util => sub { my $class = 'Foo' . $i++; install_subroutine($class, hello => \&hello, goodby => \&goodby); }, data_util_pp => sub { my $class = 'Foo' . $i++; local $ENV{DATA_UTIL_PUREPERL} = 1; install_subroutine($class, hello => \&hello, goodby => \&goodby); }, export_to => sub { my $class = "Foo" . $i++; export_to($class => {hello => \&hello, goodby => \&goodby}); }, sub_install => sub { my $class = "Foo" . $i++; Sub::Install::install_sub({code => \&hello, into => $class, as => "hello"}); Sub::Install::install_sub({code => \&goodby, into => $class, as => "goodby"}); } } );