use Math::RungeKutta; sub outer { my $var = ...; my $dydt = sub { ... $var ... }; ... ($t, @y) = rkXXX(\@y, $dydt, $t, $dt); ... }