fork (and in turn, Parallel::ForkManager) doesn't return data to the parent process and has no provisions to do so.

The easiest approach would be to have each client write out the results to a file, and then read each file in turn in the parent. The run_on_finish callback allows you to conveniently know when to collect more data in the parent:

use JSON::XS 'encode_json', 'decode_json'; $pm->run_on_finish(sub { my ($pid, $exit_code, $filename) = @_; print "** $ident was just written"; open my $fh, '<', $filename or die "Couldn't read child results +from '$filename': $!"; binmode $fh; local $/; my $results = <$fh>; # Convert results back to the data structure: $results = json_decode( $results ); # now, merge those results with the other results you already ha +ve }); ... for my $task (@tasks) { my $filename = "some filename based on $task"; $pm->start( $filename ) and next; ... do the work open my $fh, '>', $filename or die "Couldn't write output file '$filename': $!"; binmode $fh; print $fh json_encode(\%results); };

In reply to Re: Return all the data from child to parent with Parallel::Forkmanager by Corion
in thread Return all the data from child to parent with Parallel::Forkmanager by Microcebus

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.