Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Carriage return needed after process finishes!

by mdkempfert (Initiate)
on Apr 23, 2014 at 19:47 UTC ( [id://1083428]=perlquestion: print w/replies, xml ) Need Help??

mdkempfert has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monks,

I'm seeing a very strange issue in my Perl script and I cannot for the life of me figure out what's happening.

Hopefully someone here can shed some light on what might be going on under the hood such that I can explore further, because I'm out of ideas here.

Here's the basic idea behind my script:

* It's multithreaded and launches a bunch of Linux processes in parallel (launches them to different machines on my company's server queue for parallel processing).

* It waits for all of these processes to complete.

* It checks results of the processes (files produced) and summarizes the status.

The strange issue is this: as soon as one of the processes finishes, I need a carriage return after my lines! I'm working in Linux and as such, "\n" is used for newline, and returns the cursor to the left and the next line. But, after any ONE of the processes finishes, I need to use "\r\n" to achieve the same behavior!

Someone, these processes are corrupting the output and causing me to need the carriage return. What could be happening here?

I'm using "tcsh" as my terminal shell and "xterm" is the terminal.

Thanks in advance for any insight. I've scoured the Internet and haven't found anything that alleviates this problem.

  • Comment on Carriage return needed after process finishes!

Replies are listed 'Best First'.
Re: Carriage return needed after process finishes!
by rjt (Curate) on Apr 23, 2014 at 21:02 UTC

    It is hard to offer much in the way of concrete advice without a working example that shows the problem. Please see How do I post a question effectively? and edit your post accordingly.

    Until such time, all I can do is take a guess (although a somewhat educated one) that perhaps, somewhere along the line, your process (or one of its threads) managed to send a Linux terminal escape code to change the terminal mode, as for example do some curses applications.

    One way you can get down to the raw bytes is through the use of the common script(1) utility. Run your program under that, and then look at the typescript file with a hex editor to spot any unwanted control codes.

    Please do consider coming up with a minimal example that illustrates your problem, and consult the above links for possible diagnostic help.

Re: Carriage return needed after process finishes!
by Anonymous Monk on Apr 23, 2014 at 20:02 UTC

    Please show your code, at least the relevant part(s), along with any relevant information such as what modules you're using, what external tools you're calling, and what OSes you're working on. Without that, we'd also only be guessing as to which of your various processes is might be reading from STDIN. You can edit your original post to add this information, see How do I change/delete my post?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1083428]
Approved by rjt
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2024-04-16 07:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found