in reply to Reading terminal input while program is running

Take a look at the non-blocked reading mode in Term::ReadKey. For example:

#!/usr/bin/perl use warnings; use strict; use Term::ReadKey; while(1) { #do some stuff print "Did something\n"; sleep 5; if (my $line= ReadLine -1) { print "Got this command: $line"; } }

There are ten types of people: those that understand binary and those that don't.

Replies are listed 'Best First'.
Re^2: Reading terminal input while program is running
by minixman (Beadle) on Feb 01, 2006 at 10:26 UTC
    When i run it i am not getting anything back from the request

    $ perl current_users.pl `pwd` ############################################## GFMIS Exlink User Activity Start: 01/02/2006 10:24 : Host = EU1 ############################################## 2006-01-25 15:38:24,953: Trader (DBL99911) = Connected DISPLAY 2006-01-25 15:38:24,953: Trader (DBL99911) = Connected Hey i got the following signal INT Somebody sent me a SIGINT at current_users.pl line 110.

      Sorry, my magic crystal ball is still out for repair (damn Grima!). You'll need to post code for anyone to figure out what's wrong in your script. Please make an effort to cut it down to the part that's necessary (i.e. the bit that's not doing what you think it ought to) before doing so though.


      There are ten types of people: those that understand binary and those that don't.
        Here is the part which reads a log file which process all the information.
        $file=File::Tail->new(name=>$name, maxinterval=>1, adjustafter=> +1); while (defined($line=$file->read)) { my($logindate,$loginuser,$logoutdate,$logoutuser,$count); #if($line =~ /validateLogin\((.*)\)/){ $v = $1;} if($line =~ /INFO\s\s(\d+)(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+ +),(\d+)\s\[(.*)\]\s\((.*)\) - validateLogin\((.*)\)/){ $logindate = "$1$2-$3-$4 $5:$6:$7,$8"; $loginuser = "$11"; if(($logging)&&($debug)){&writelog(1,"DEBUG: Tail Event Logi +n found user date string = $logindate user = $loginuser");} } }
        So i guess somewhere whilst it is processing the file i would want to be able to lookout for user intput on the terminal
Re^2: Reading terminal input while program is running
by blazar (Canon) on Feb 01, 2006 at 12:31 UTC
    Or depending on his actual needs, even something like Curses.