Hello Monks, sorry for the short question, here are some more informations:

The OS is Ubuntu 14.04, writing to the local filesystem

open ($fh, '>>', $file_out); $fh->autoflush(1); print $fh "$date;Site;CTR;IP;Temperature\n"; $i = 0; #######################Variables for the ForkManager------------------ +-------------------> my $count1 = 0; my $pm = Parallel::ForkManager->new(50); $pm->run_on_wait( sub { $count1++; }, 1 ); #<---------------------------Variables for the ForkManager############ +#################### foreach my $key_bgtr(sort keys %devices) { foreach my $key_ip (keys %{$devices{$key_bgtr}})# { $i++; $pm->start and next; $out[0]=$date.';'; $out[1]=$devices{$key_bgtr}{$key_ip}.';'; $out[2]=$key_bgtr.';'; $out[3]=$key_ip.';'; for (my $k =2;$k<=3;$k++) { if (!defined $out[$k]) {$out[$k] = './.'} } $ss = Net::SNMP->session(Hostname=> $key_ip, Timeout => 1); $out[4] = $ss->get_request(Varbindlist => [$oid]); $out[4]= $out[4]->{$oid}; if (defined $out[4] && $out[4] !~ /^$|\s/ && $out[4] >=5) { $out[4] = "$out[4]\n"; } else { $error = $ss->error(); if ($error =~ /.*noSuchName.*/) { $out[4]="no ALCplus2e\n"; } else { $out[4]="OFFLINE\n"; } print $log "$key_bgtr: $error \n"; } flock($fh, LOCK_EX) or die "cannnot lock file - $!\n"; print $fh @out; #print $fh $out[0]; #Datum #print $fh $out[1]; #Site ID #print $fh $out[2]; #BGTR/Link ID #print $fh $out[3]; #IP Adresse #print $fh $out[4]; #Temperature flock($fh, LOCK_UN) or die "cannnot unlock file - $!\n"; $ss->close; $pm->finish; } } close $fh;

The output should look like this:

"2015-06-23_16:57;124124124;123123123B;10.80.80.70;43"

But if printed value by value I sometimes get something like this:

"2015-06-23_16:57;2015-06-23_16:57;124124124;123123123B;10.80.80.70;43456456456;457457457B;10.81.81.71;43"

as if 2 forks could print to the fh, regardless of the lock on it


In reply to Re: Question about flock and printing to file by deruytja
in thread Question about flock and printing to file by deruytja

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.