#!/usr/bin/perl -w #testlock.pl use strict; use Parallel::ForkManager; use Fcntl qw(:flock SEEK_END); my @timenow = localtime; open (my $out, ">", "output_" . $timenow[1] . "_" . $timenow[0] . ".txt") || die "Could not open output: $!\n"; my $stdout = select ($out); $| = 1; select ($stdout); my @files = (1 ..100); my $fork = new Parallel::ForkManager(8); foreach my $file (@files){ $fork->start and next; my $checksum = "md5sum $file"; flock($out, LOCK_EX) or die "Cannot lock filehandle - $!\n"; seek($out, 0, SEEK_END) or die "Cannot seek - $!\n"; print $out "Analysis for file $file\n\tchecksum $checksum\n"; flock($out, LOCK_UN) or die "Cannot unlock filehandle - $!\n"; $fork->finish; } $fork->wait_all_children; close $out;