1 / 17

Perl Control Flow

Perl Control Flow. Learning Objectives: To understand the commands available for control flow in Perl To learn some useful operators in Perl. “ if “ statement. The Perl if statement works almost the same as in C++: #!/usr/local/bin/perl5 -w $user = `whoami`; chomp($user);

ugo
Download Presentation

Perl Control Flow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Perl Control Flow Learning Objectives: To understand the commands available for control flow in Perl To learn some useful operators in Perl

  2. “ if “ statement • The Perl if statement works almost the same as in C++: #!/usr/local/bin/perl5 -w $user = `whoami`; chomp($user); if($user eq "clinton"){ print "Hi Bill!\n"; } … if (-e “datafile”) {…} # if file exists… • The eq operator compares two strings, and returns true if they are equal (use == for numeric comparisons). • The curly braces { } are always required in Perl (even if only one statement inside, unlike C++). This avoids the “dangling else” problem.

  3. “ if … elsif … else “ statement • You can also handle a list of cases: #!/usr/local/bin/perl5 -w $users = `who | wc -l`; chomp($users); if ($users > 4){ print "Heavy load!\n"; } elsif ($users > 1){ print "Medium load\n"; } else { print "Just me!\n"; }

  4. Relational Operators • Perl’s numeric and string comparison operators: Comparison Numeric String Equal == eq Not equal != ne Less than < lt Greater than > gt Less than or equal to <= le Greater than or equal to >= ge

  5. Truth in Perl • Truth is flexible in Perl: • Expressions that evaluate to false 0 # traditional false value "" # the null string "0" # only non-zero length false string • Some examples of truth: 1 # traditional true value 684 # non-zero numerical values are true " " # whitespace is true "hello" # strings are true "00" # a string

  6. And, Or, Not • 1represents true, and 0 false (as in C++). • You can also combine and negate expressions with logical and (&&), logical or (||), and not (!) just like in C++: #!/usr/local/bin/perl5 -w chomp($user = `whoami`); chomp($nme = `who | grep $user | wc -l`); chomp($nusers = `who | wc -l`); if($nusers - $nme && $user ne "clinton"){ print "Someone else is logged in!\n"; } else{ print "All is well!\n"; }

  7. “ while“ statement • The whilestatement loops indefinitely, while the condition is true, such as a user-controlled condition: #!/usr/local/bin/perl5 -w $resp = "no"; while($resp ne "yes"){ print "Wakeup [yes/no]? "; chomp($resp = <STDIN>); } $ test11 Wakeup [yes/no]? no Wakeup [yes/no]? y Wakeup [yes/no]? yes $

  8. Looping using for (1) • for can be used as in C++ to do incrementing loops: $ cat fac #!/usr/local/bin/perl5 -w print "Enter number: "; $n = <STDIN>; $fac = 1; for($i=1; $i<=$n; $i++){ $fac *= $i; } print "The factorial of $n is $fac\n"; $ fac Enter number: 5 The factorial of 5 is 120 $ Don’t forget to chomp $n

  9. Looping using for (2) • Withchomp(): $ cat fac #!/usr/local/bin/perl5 -w print "Enter number: "; chomp($n = <STDIN>); $fac = 1; for($i=1; $i<=$n; $i++){ $fac *= $i; } print "The factorial of $n is $fac\n"; $ fac Enter number: 5 The factorial of 5 is 120 $

  10. “last “ command • The lastcommand works like the C++ break command, breaking out of the innermost loop : $ cat test12 #!/usr/local/bin/perl5 -w while(1){ print "Wakeup [yes/no]? "; chomp($resp = <STDIN>); if($resp eq "yes"){ last; } } $ test12 Wakeup [yes/no]? no Wakeup [yes/no]? y Wakeup [yes/no]? yes $

  11. String Operators (1) • Concatenate strings with the “.” operator (a period). $ cat string #!/usr/local/bin/perl5 -w $name = "Bill" . "Clinton"; print "$name\n"; print "Bill"."Gates"."\n"; $ string BillClinton BillGates $

  12. String Operators (2) • The string repetition operator x allows you to repeat a string several times: $ cat string1 #!/usr/local/bin/perl5 -w $name = "Bill"x3; print "$name\n"; $n = 4; print "Bill" x 2 . "Gates" x $n . "\n"; print 5; print "\n"; $test = ($n+1) x 4; print "$test\n"; $ string2 BillBillBill BillBillGatesGatesGatesGates 5 5555 $

  13. Variable Interpolation (1) • Putting variables inside double quotes is called variable interpolation. We have seen many examples of this. • The variable name will be the longest possible variable name that makes sense at that part of the string. • Enclose the variable in a pair of curly braces if needed to override this.

  14. Variable Interpolation (2) $ cat bill1 #!/usr/local/bin/perl5 -w $bill = "trouble"; $billgates = "cheap"; print "Bill is $bill\n"; print "Bill is $billgates\n"; print "Bill is ${bill}gates\n"; print "Bill is "."$bill\n"; print "Bill is "."$bill"."\n"; $ bill1 Bill is trouble Bill is cheap Bill is troublegates Bill is trouble Bill is trouble $

  15. Exponentiation • Perl has an exponentiation operator ** unlike C++: $ cat exp #!/usr/local/bin/perl5 -w $n = 2; $m = 3; $result = $n ** $m; print "$n raised to the $m power is $result\n"; $ exp 2 raised to the 3 power is 8 $

  16. Operator Precedence • Operator precedence is basically the same as in C++. • As in C++, you can use parentheses to override precedence, and to clarify the grouping. $ cat prec #!/usr/local/bin/perl5 -w $n = 2; $m = 3; $result = $n + 1 * $m; print "$n plus one times $m is $result\n"; $result = ($n + 1) * $m; print "$n plus one times $m is $result\n"; $ prec 2 plus one times 3 is 5 $ prec 2 plus one times 3 is 9

  17. Write a Program to compute the Sum #!/usr/local/bin/perl5 –w $sum=0; While (...) { ...

More Related