How to use elsif for multiple conditions in Perl?

Question

How to use elsif for multiple conditions in Perl?

Using elsif for Multiple Conditions in Perl

In Perl, controlling the flow of your program based on multiple conditional tests is commonly done using if, elsif, and else statements. The elsif keyword allows you to test additional conditions if previous conditions were false, enabling multiple branches in your logic.

Perl’s syntax for these control structures is straightforward, but some nuances—like the use of semicolons, parentheses, and curly braces—are important. The typical structure looks like this:


if (condition1) {
    # do something if condition1 is true
} elsif (condition2) {
    # do something if condition1 is false and condition2 is true
} elsif (condition3) {
    # do something if previous conditions are false, but condition3 is true
} else {
    # default action if no previous condition was true
}

Key Points about elsif in Perl

  • elsif must be spelled exactly as one word—no space between else and if. The keyword else if is not the same in Perl and will lead to different behavior.
  • Conditions inside the parentheses should be expressions that evaluate to true or false (Perl treats undef, 0, and '' as false).
  • Each conditional block is enclosed in curly braces { }, which define the scope of the block to execute if the corresponding condition is true.
  • The program executes the first true condition’s block and then skips the rest of the elsif conditions.
  • You can use as many elsif clauses as needed to test multiple conditions.

Example: Using elsif for Multiple Conditions

The following example demonstrates how to use if, multiple elsifs, and else to handle different numeric ranges:


use strict;
use warnings;

print "Enter a number: ";
chomp(my $num = <STDIN>);

if ($num < 0) {
    print "Negative number\n";
} elsif ($num == 0) {
    print "Zero\n";
} elsif ($num <= 10) {
    print "Small positive number (1 to 10)\n";
} elsif ($num <= 100) {
    print "Medium positive number (11 to 100)\n";
} else {
    print "Large positive number (>100)\n";
}

How this works: The program reads a number from user input. It checks each condition in order:

  • If the number is less than zero, it prints “Negative number” and skips the rest.
  • If it equals zero (and wasn’t negative), it prints “Zero.”
  • If not negative or zero, and ≤ 10, it prints “Small positive number.”
  • If not any of the above and ≤ 100, it prints “Medium positive number.”
  • If none of the above, it prints “Large positive number.”

Common Pitfalls

  • Using else if instead of elsif: While else if can be used as separate nested statements, it can lead to unexpected behaviors. Always prefer elsif in Perl for multiple conditions.
  • Missing curly braces: Perl requires curly braces around the code blocks following each condition for clarity and correctness, especially when blocks contain multiple statements.
  • Forgetting to use parentheses: Conditions in if and elsif must be properly enclosed in parentheses for precedence and readability.

Summary

Using elsif in Perl lets you test multiple alternative conditions elegantly. It’s an integral part of Perl’s control flow, allowing you to execute different code depending on which condition is true, with the guarantee that only one block executes. Always remember the syntax conventions: if (cond) {}, followed by zero or more elsif (cond) {} blocks, optionally ending with else {}.

Verified Code

Executed in a sandbox to capture real output. • v5.34.1 • 5ms

Tip: edit code and use “Run (Browser)”. Server runs always execute the published, verified snippet.
STDOUT
(empty)
STDERR
(empty)

Was this helpful?

Related Questions