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