Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

A console output question

by arunhorne (Pilgrim)
on Jun 18, 2002 at 10:41 UTC ( [id://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

Replies are listed 'Best First'.
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 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.

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"

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (8)
As of 2024-04-18 16:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found