in reply to Re^2: script should wait for another script to complete
in thread script should wait for another script to complete

Hello again skatpally,

Sorry for the late reply but I got busy with something else.

Regarding your question what I am looking is when the file is locked and multiple Perl commands are triggered. I want to know an approach where each of the commands is in the queue and each gets triggered one after another. I think the best solution to your problem is Thread::Queue.

More specifically you should read the Thread::Queue/ADVANCED METHODS. There you will find ways in checking/adding/altering the queue of you commands in a way you desire.

The link that I provided you contains an example of this module Re^3: perl script and queue. Any way, a more complete code example that could give you a close solution to what you desire is provided bellow.

Sample of executable code:

#!/usr/bin/perl use strict; use threads; use warnings; use feature 'say'; use Thread::Queue; sub executeCommands { my ($commands) = @_; say $commands; } my $q = Thread::Queue->new(); # A new empty queue # Set a size for a queue $q->limit = 5; # Worker thread my $thr = threads->create( sub { # Thread will loop until no more work while (defined(my $item = $q->dequeue())) { # Do work on $item executeCommands($item); } } ); my @commands = ("Command_1", "Command_2"); # Send work to the thread $q->enqueue(@commands); { lock($q); # Keep other threads from changing the queue's content +s my @secondary_commands = ("Command_3", "Command_4"); # Insert two items into the queue in the head $q->insert(-2, @secondary_commands); my $item = $q->peek(); # do something with the items in queue if desired if ($item eq "Command_3") { my @third_commands = ("Command_5", "Command_6"); # Insert two items into the queue just behind the peek $q->enqueue(@third_commands); } } # Queue is now unlocked # Signal that there is no more work to be sent $q->end(); # Join up with the thread when it finishes $thr->join(); __END__ $ perl test.pl Command_3 Command_4 Command_1 Command_2 Command_5 Command_6

Hope this helps, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!