Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

how to take user input from command line and continue

by simonz (Sexton)
on Apr 10, 2014 at 10:12 UTC ( [id://1081782]=perlquestion: print w/replies, xml ) Need Help??

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

Hi
I am trying to write an interactive perl script which will check the commandl line for a message and if the check is successful it will assign 'yes' otherwise will take it from the <STDIN>. Based on the answer, if it is 'yes' the script should continue else it would take the necessary action.
Please refer to the code below which I am trying

use Term::ReadLine; # Initialize the term variable for the keyborad input my $TERM = new Term::ReadLine 'Installer'; my $OUT = $TERM->OUT || \*STDOUT; my $prompt = "Would you like to continue\n"; my $ans; $ans = ($TERM->readline($prompt)) ? : 'yes' :<STDIN> ; chomp($ans); print "ans is $ans \n"; if($ans =~ /yes/) { print "yes and continue\n"; } else { print "no and take action\n"; }

Replies are listed 'Best First'.
Re: how to take user input from command line and continue
by mtmcc (Hermit) on Apr 10, 2014 at 10:42 UTC
    It isn't fully clear what you'd like to do from your question. Presuming you have a good reason for wanting to use Term::Readline (which you don't need to process command line variables) then something like this might be what you're looking for:

    #!/usr/bin/perl use strict; use warnings; use Term::ReadLine; # Initialize the term variable for the keyborad input my $commandLineMessage = $ARGV[0]; my $TERM = new Term::ReadLine 'Installer'; my $OUT = $TERM->OUT || \*STDOUT; my $prompt = "Would you like to continue?\n"; my $ans = 'yes' if $commandLineMessage eq 'yes'; $ans = $TERM->readline($prompt) if $commandLineMessage ne 'yes'; chomp($ans); print "ans is $ans \n"; if($ans =~ /yes/) { print "yes and continue\n"; } else { print "no and take action\n"; }

    If you had used strict and warnings, you would have found the main syntactical error in this line:

    $ans = ($TERM->readline($prompt)) ? : 'yes' :<STDIN> ;

    which means "if a response is given, then $ans is yes, if no response is given, get a line from standard input". Which in turn means that $ans will always be set to yes if the user gives any input at all.

    I hope that helps

Re: how to take user input from command line and continue
by Bloodnok (Vicar) on Apr 10, 2014 at 10:26 UTC
    ...and your problem is what exactly?? Your problem statement and code are quite clear, but you completely fail to mention which aspect is causing you problems &/or exactly the wisdom that you seek.

    A user level that continues to overstate my experience :-))

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2024-03-28 17:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found