
- Perl Basics
- Perl - Home
- Perl - Introduction
- Perl - Environment
- Perl - Syntax Overview
- Perl - Data Types
- Perl - Variables
- Perl - Scalars
- Perl - Arrays
- Perl - Hashes
- Perl - IF...ELSE
- Perl - Loops
- Perl - Operators
- Perl - Date & Time
- Perl - Subroutines
- Perl - References
- Perl - Formats
- Perl - File I/O
- Perl - Directories
- Perl - Error Handling
- Perl - Special Variables
- Perl - Coding Standard
- Perl - Regular Expressions
- Perl - Sending Email
- Perl Advanced
- Perl - Socket Programming
- Perl - Object Oriented
- Perl - Database Access
- Perl - CGI Programming
- Perl - Packages & Modules
- Perl - Process Management
- Perl - Embedded Documentation
- Perl - Functions References
- Perl Useful Resources
- Perl - Questions and Answers
- Perl - Quick Guide
- Perl - Useful Resources
- Perl - Discussion
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Perl switch Statement
A switch statement allows a variable to be tested for equality against a list of values. Each value is called a case, and the variable being switched on is checked for each switch case.
A switch case implementation is dependent on Switch module and Switch module has been implemented using Filter::Util::Call and Text::Balanced and requires both these modules to be installed.
Syntax
The synopsis for a switch statement in Perl programming language is as follows −
use Switch; switch(argument) { case 1 { print "number 1" } case "a" { print "string a" } case [1..10,42] { print "number in list" } case (\@array) { print "number in list" } case /\w+/ { print "pattern" } case qr/\w+/ { print "pattern" } case (\%hash) { print "entry in hash" } case (\&sub) { print "arg to subroutine" } else { print "previous case not true" } }
The following rules apply to a switch statement −
The switch statement takes a single scalar argument of any type, specified in parentheses.
The value is followed by a block, which may contain one or more case statement followed by a block of Perl statement(s).
A case statement takes a single scalar argument and selects the appropriate type of matching between the case argument and the current switch value.
If the match is successful, the mandatory block associated with the case statement is executed.
A switch statement can have an optional else case, which must appear at the end of the switch. The default case can be used for performing a task when none of the cases is matched.
If a case block executes an untargeted next, control is immediately transferred to the statement after the case statement (i.e., usually another case), rather than out of the surrounding switch block.
Not every case needs to contain a next. If no next appears, the flow of control will not fall through subsequent cases.
Flow Diagram

Example
#!/usr/local/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var) { case 10 { print "number 100\n" } case "a" { print "string a" } case [1..10,42] { print "number in list" } case (\@array) { print "number in list" } case (\%hash) { print "entry in hash" } else { print "previous case not true" } }
When the above code is executed, it produces the following result −
number 100
Fall-though is usually a bad idea in a switch statement. However, now consider a fall-through case, we will use the next to transfer the control to the next matching case, which is a list in this case −
#!/usr/local/bin/perl use Switch; $var = 10; @array = (10, 20, 30); %hash = ('key1' => 10, 'key2' => 20); switch($var) { case 10 { print "number 100\n"; next; } case "a" { print "string a" } case [1..10,42] { print "number in list" } case (\@array) { print "number in list" } case (\%hash) { print "entry in hash" } else { print "previous case not true" } }
When the above code is executed, it produces the following result −
number 100 number in list