Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: beginner scripting question re: if elsif else

by kennethk (Monsignor)
on Oct 11, 2012 at 20:21 UTC ( #998532=note: print w/ replies, xml ) Need Help??


in reply to beginner scripting question re: if elsif else

My guess is that you mean you want execution to stop before your get to question #2. In order for that to hold, you need to test the value of $weather before your execute your next print. Perhaps you mean something more like:

#!/usr/bin/perl # walkies.pl use warnings; use strict; print "What's the weather like outside? "; chomp(my $weather = <STDIN>); if ($weather eq "snowing") { print "OK, let's go!\n"; exit; } elsif ($weather eq "raining") { print "No way, sorry, I'm staying in.\n"; exit; } print "How hot is it, in degrees Celsius? "; my $temperature = <STDIN>; if ($temperature < 18) { print "Too cold for me!\n"; exit; } print "And how many emails left to reply to? "; my $work = <STDIN>; if ($work > 30) { print "Sorry - just too busy.\n"; } else { print "Well, why not?\n"; }
If you want to avoid explicit exits, you could do the same thing with nested if-elsif-else's:
#!/usr/bin/perl # walkies.pl use warnings; use strict; print "What's the weather like outside? "; chomp(my $weather = <STDIN>); if ($weather eq "snowing") { print "OK, let's go!\n"; } elsif ($weather eq "raining") { print "No way, sorry, I'm staying in.\n"; } else { print "How hot is it, in degrees Celsius? "; my $temperature = <STDIN>; if ($temperature < 18) { print "Too cold for me!\n"; } else { print "And how many emails left to reply to? "; my $work = <STDIN>; if ($work > 30) { print "Sorry - just too busy.\n"; } else { print "Well, why not?\n"; } } }

There are a multitude of other ways to do this, but it all comes down to thinking about the logical progression of what you want to accomplish.


#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.


Comment on Re: beginner scripting question re: if elsif else
Select or Download Code
Re^2: beginner scripting question re: if elsif else
by jhumphreys (Novice) on Oct 11, 2012 at 21:08 UTC

    kennethk-

    Thanks for your reply. So, with if elsif else, if the first condition is true, the whole script still runs anyway (if no exits scripted)?

    j.

      Yes, the first part of your code gathers information from the user, then the second part actually does something with it. The way you have it, it will ask all the questions, and get all the answers from the user BEFORE getting to the if/else section. Once it is in the if/else section, it will do as you suspect -- i.e. if it is snowing, then that satisfies the if condition and therefore the else conditions are skipped.

        Dlamini-

        Thanks! That's just what I needed to know.

        j.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (14)
As of 2014-08-29 12:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (280 votes), past polls