Puedes entonces lo que necesitas es cambiar los contenidos de @datos antes de llamar a integral(). Si no puedes pasar variables a f(), entonces la opción es usar variables globales. Pues entonces debes cambiarlas antes de llamar a integral().
La línea inventada que tienes sólo te servirá si @set_datos es un array de arrays de datos, pero quedará mucho mejor si lo haces con referencias:
A la hora de construir la estructura de datos:
Código:
our $datos_ref;
our @set_datos;
# bucle para inicializar los datos
# ...
push @set_datos, [@datos];
# ...
Luego, en el bucle principal
Código:
for $datos_ref ( @set_datos ) {
integral();
}
y dentro de integral();
Código:
for my $dato ( @$datos_ref ) {
...
}