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

A console output question

by arunhorne (Pilgrim)
on Jun 18, 2002 at 10:41 UTC ( #175331=perlquestion: print w/ replies, xml ) Need Help??
arunhorne has asked for the wisdom of the Perl Monks concerning the following question:

Monks

I have written a perl script that reads a very large file line by line and processes it. I want to give the user some feedback, i.e. the current line. So I want to write to the console something like:

Current line is: 31721

I could do it with a print statement, but this produces a new line for each update. Is it possible to overwrite the previous line, i.e. 31721 becomes 31722 and gives the illusion of a counter and looks much neater?

Thanks,

____________
Arun

Comment on A console output question
Download Code
Re: A console output question
by Chmrr (Vicar) on Jun 18, 2002 at 10:47 UTC

    Use print "Current line is: $line\r" or some varient thereof. \r moves the 'cursor' to the start of the line, without moving down a line. You will need to turn buffering off ($|++) for this to work.

    perl -pe '"I lo*`+$^X$\"$]!$/"=~m%(.*)%s;$_=$1;y^`+*^e v^#$&V"+@( NO CARRIER'

Re: A console output question
by greenFox (Vicar) on Jun 18, 2002 at 10:51 UTC
Re: A console output question
by strat (Canon) on Jun 18, 2002 at 11:18 UTC
    Btw: with a while(<...>) - loop, you can find out about the current line by reading the content of the special Variable $. as long as the Filehandle is still opened. But if you change the variable $/ , $. will give you the number of read blocks (what a block is, is said in $/ ).

    Best regards,
    perl -e "s>>*F>e=>y)\*martinF)stronat)=>print,print v8.8.8.32.11.32"

Re: A console output question
by demerphq (Chancellor) on Jun 18, 2002 at 11:30 UTC
    I like to use the following:
    use Tie::Cycle; tie my $spinner, 'Tie::Cycle', ["\r-","\r\\","\r|","\r//"]; my $spin_every=10; while (<>) { print $spinner unless $. % $spin_every; # yada-yada-yada }
    The result is a spinning line. Excellent for indicating the program is still alive. The use of mod prevents the output fom happening so often that printing slows the script down noticibly.

    Yves / DeMerphq
    ---
    Writing a good benchmark isnt as easy as it might look.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (13)
As of 2015-07-07 13:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls