(Note: most of this is guesswork regarding *nix -- not my FOE -- but its nothing to do with threads)

In the days of old, the linefeed character just moved to the next line; an carriage return was required to move to the start of the line. (Think about how manual typewriters operate. If you ever seen one.)

To the best of my knowledge, most *nix consoles only require LF to cause them to perform both operations, but that's a reinterpretation of the purpose, and probably only operates when the console is operating in 'cooked' mode.

My guess is that

the issue only presents itself when the SSH/tcpdump line is included.

the command you are issuing is switching the terminal into 'raw' (or 'ultra-raw') mode and failing to reset it when it ends. Hence, thereafter, the LF is only moving to the next line, and is failing to return to the left hand edge.

Perhaps the thing to do is use Term::ReadKey::ReadMode() to control/restore the settings after the command ends.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.

That makes sense. I'm no way any expert on Linux Terminals and this is a weird issue I haven't seen before. Once I get back to work on Wednesday I'll troubleshoot this some more. Thank you again.

One other question: My ultimate goal is to use pipe opens in the threads if possible. Currently I'm capturing only 10 packets into those scalars. I would much rather prefer to use the pipe opens (so that data is continuously streamed from the various servers and printed out in real time). I had some trouble trying to implement that however. What would you recommend to perform such a task? Basically the code was the same, but the SSH line was replaced with a pipe open to the SSH/tcpdump process, then a while loop in each thread, that would print data if it was seen.

I can see that being difficult, as I've read in a few places that pipe opens aren't supported in Perl threads. Still, it would be much more preferable to find a way to stream the data continuously and not just capture 10 packets at a time, having to run the entire thing in some loop that constantly creates new SSH connections.