in reply to Re^2: Global objects?
in thread Global objects?

I would question the need to use threads for this project. As far as I can see, the threads merely read what appears to be a 1-line file, and print, for each loop. There does not seem to be any "event" the thread waits on, other than a pre-specified timer.

If this is an exercise (which is a laudable goal), I would approach using the threads differently.

Avoid shared variables unless absolutely necessary. The only thing the threads need to be told is when to quit. You can pass that information using a Thread::Queue. Any data collected by the thread can be returned by the same mechanism. Working thread code using Queues, is available here.

Each thread would read the queue in NON-BLOCKING mode, and quit if a message is received.

The main thread would queue in THREADCOUNT messages, when it was time to quit.

You also had additional requirements (in a separate post). If thresholds are breached, you can use the same thread to communicate the breach back to the main thread. That would then perform the appropriate action. This way, the thread code can be clean, and minimal.

I would also suggest you let perl read the files, instead of doing "CAT".

     "How many times do I have to tell you again and again .. not to be repetitive?"