my $stats = []; my $code = create_closure( $stats ); .... $pm->run_on_finish( $code ); .... print Dumper( $stats ); sub create_closure { my( $stats ) = @_; return sub { my ($pid, $exit_code, $ident) = @_; push( @$stats, { pid => $pid, exit_code => $exit_code, ident => $ident } ); } }