Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: Perl 5.10: switch statement demo

by LighthouseJ (Sexton)
on Dec 20, 2007 at 13:42 UTC ( #658114=note: print w/replies, xml ) Need Help??

in reply to Perl 5.10: switch statement demo

I don't know why people want a verbatim 'switch' statement when you can use a for-statement.
#!/usr/bin/perl -w use strict; { for (1..40) { print; ($_ % 3 == 0) && print q! fizz!; ($_ % 5 == 0) && print q! buzz!; ($_ % 7 == 0) && print q! sausage!; print "\n"; } }

I generally use a for loop in conjunction with regular expression matches, like this trivial example:
#!/usr/bin/perl -w use strict; { my @items = qw/The three principal virtues of a programmer are Laz +iness, Impatience, and Hubris. See the Camel Book for why/; for (@items) { /^[A-Z]/ && do { print "Found a proper noun? $_\n"; next; }; /[,.]/ && do { print "This word has punctuation: $_\n"; next; }; print "This word seems uninteresting: $_\n"; } }

It has a lot of flexibility where you can mix and match parts and get real nice uses out of it. I've always used it fully and got very good results --without waiting for a proper switch statement.

"The three principal virtues of a programmer are Laziness, Impatience, and Hubris. See the Camel Book for why." -- `man perl`

Replies are listed 'Best First'.
Re^2: Perl 5.10: switch statement demo
by robin (Chaplain) on Dec 20, 2007 at 18:20 UTC
    You can use when in a for loop:
    for (@items) { when (/^[A-Z]/) { say "Found a proper noun? $_"; } when (/[,.]/) { say "This word has punctuation: $_"; } say "This word seems uninteresting: $_"; }
      I guess that's kind of my point. The really useful and powerful things in todays computing industry like Perl, UNIX, even RISC processors all merely provide you with a basic set of tools and rely on you (the user) to put the simple tools together to make a useful mechanism.

      Stuff like adding a named "switch" statement or needing a "when" keyword just complicates it unnecessarily IMO.

      I had a discussion about this with an Oracle DBA. Needless to say we maintained our differences of opinion.

      "The three principal virtues of a programmer are Laziness, Impatience, and Hubris. See the Camel Book for why." -- `man perl`
        Well, I wasn't really trying to make a polemical point. You just gave me a convenient excuse to draw attention to a feature of the switch implementation that I thought people might be interested in hearing about. :-)

        Needless to say, though, I don't agree with you. If I did, then I wouldn't have implemented the switch feature, presumably! It sounds odd to me to hear Perl described as a "simple tool". What I like about it is precisely the opposite: the fact that it's rich and interesting, and usually has More Than One Way To Do It.

        Java is a simple language, but it's difficult to write a useful Java program that is simple. Perl is not a simple language, but it is a language in which it's possible to write simple programs.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://658114]
[Your Mother]: -R, -r, --recursive
[1nickt]: Discipulus, Corion, try this: D.A. Golden's blog
[Lady_Aleena]: Your Mother, that's the command line grep, not perl's grep.
[Your Mother]: …how on Earth could Perl’s grep recurse?
[Tanktalus]: perldigious: I'm not looking to get rich. I'm looking for interesting work, with good continuity of employment, and maintenance of our current lifestyle. (An improvement wouldn't be bad, either, but that's not a requirement ;) )
erix enjoys the confusion++
[Your Mother]: :P
[Tanktalus]: Without confusion, I'd be out of a job ;)
[Tanktalus]: Already. :D
[Lady_Aleena]: Your Mother, I wish it did have a way to put in a directory to search.

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (11)
As of 2017-05-23 19:31 GMT
Find Nodes?
    Voting Booth?