in reply to Modern exposition of "case" or Switch in perl 5.34?
G'day symgryph,
"I have read a lot about NOT using the 'switch' statement of yore, ..."
You need to be a bit careful with terminology. Perl does not have nor, as far as I know, has ever had a 'switch' statement. It does have "The 'switch' feature". There is a CPAN Switch module which provides a 'switch' function. I'm going to assume that you're talking about the Switch module.
The BUGS and LIMITATIONS sections of Switch both provide a number of reasons to avoid it. I would strongly recommend against using it in production code.
"... but saw some comments on using 'when' instead."
I'll assume that's from the Switch BUGS section: "In general, use given/when instead.".
When that was written, it was probably an entirely reasonable statement; however, in 5.18.0 'given', 'when, and the associated '~~' operator, were made experimental: "perl5180delta: The smartmatch family of features are now experimental". At 5.34.0 they remain experimental:
$ perl -v | head -2 | tail -1 This is perl 5, version 34, subversion 0 (v5.34.0) built for cygwin-th +read-multi $ perl -E 'say 1~~2 ? "yes" : "no"' Smartmatch is experimental at -e line 1. no $ perl -E 'my $x = 1; given ($x) { when (2) { say "yes" } default { sa +y "no" } }' given is experimental at -e line 1. when is experimental at -e line 1. no
Again, I would not use these in production code.
"Is there a modern howto on doing a case like construct in perl 5.34?"
— Ken
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Modern exposition of "case" or Switch in perl 5.34?
by ikegami (Patriarch) on Jul 04, 2021 at 11:11 UTC | |
by kcott (Archbishop) on Jul 04, 2021 at 20:26 UTC | |
by Bod (Parson) on Jul 04, 2021 at 18:25 UTC | |
by ikegami (Patriarch) on Jul 05, 2021 at 18:25 UTC |