Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 contemplating the Monastery: (4)
As of 2025-07-08 05:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.