Normally one might use multiple OR conditions such as:
$pet = "rabbit"; if ( uc($pet) eq "CAT" || uc($pet) eq "DOG" || uc($pet) eq "HAMSTER" || uc($pet) eq "RABBIT" || uc($pet) eq "RACCOON" || uc($pet) eq "MONKEY" || uc($pet) eq "HORSE" ) { printf("A %s is a Mammal.\n", ucfirst($pet) ); } elsif ( uc($pet) eq "ALLIGATOR" || uc($pet) eq "FROG" || uc($pet) eq "SALAMANDER" || uc($pet) eq "SNAKE" || uc($pet) eq "TOAD" ) { printf("A %s is an Amphibian.\n", ucfirst($pet) ); } else { printf("What is a %s ?\n", ucfirst($pet) ); }
Here is an easier way (Full string match, not case-sensitive):
#Search word $pet = "rabbit"; #Regular Expression: / ^=beginning of string, $pet variable, $=end of string / i=ignore case #Using Anonomous Array: ("cat", "dog", "...as-many-as-you-like...", "horse") if ( grep /^$pet$/i, ("cat","dog","hamster","RABBIT","Raccoon","Monkey","horse") ) { printf("A %s is a Mammal.\n", ucfirst($pet) ); } elsif ( grep /^$pet$/i, ("Alligator", "frog", "salamander", "Snake", "toad") ) { printf("A %s is an Amphibian.\n", ucfirst($pet) ); } else { printf("What is a %s ?\n", ucfirst($pet) ); }
Some notes:
- Removing the "i" option would make the statement case-sensitive:
- Altering the Regular Expression slightly, will match the beginning or end of strings.
Matching the beginning of the strings (remove the ending $ symbol):
Matching the end of the strings (remove the leading ^ carret symbol):