Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

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`


Comment on Re: Perl 5.10: switch statement demo
Select or Download Code
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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://658114]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2014-08-28 10:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (259 votes), past polls