>perl -wMstrict -le "my $funcs = [ sub { print q{i'm at index zero} }, sub { print q{and i'm at index 1} }, ]; add_func({ fns => $funcs, fn => sub { print q{i'm new here} }, at => 3 }); $funcs->[0](); $funcs->[3](); sub add_func { my %args = %{ shift() }; $args{fns}->[$args{at}] = $args{fn} } " i'm at index zero i'm new here