in reply to using Switch;

why would we use switch instead of elsif?

I wouldn't.

And here's why: from the docs:

BUGS
There are undoubtedly serious bugs lurking somewhere in code this funky :-) Bug reports and other feedback are most welcome.

LIMITATIONS
Due to the heuristic nature of Switch.pm's source parsing, the presence of regexes specified with raw ?...? delimiters may cause mysterious errors. The workaround is to use m?...? instead.
Due to the way source filters work in Perl, you can't use Switch inside an string eval.
If your source file is longer then 1 million characters and you have a switch statement that crosses the 1 million (or 2 million, etc.) character boundary you will get mysterious errors. The workaround is to use smaller source files.

See also Re^4: How to use select (Switch.pm considered harmfull)