Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: style guidance

by moritz (Cardinal)
on Nov 08, 2009 at 12:26 UTC ( [id://805756]=note: print w/replies, xml ) Need Help??


in reply to Re: style guidance
in thread style guidance

Or even
use strict; use warnings; use 5.010; sub do_stuff1 { given($_[0]) { chomp; say; } }
Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^3: style guidance
by dsheroh (Monsignor) on Nov 08, 2009 at 12:47 UTC
    What, if anything, is gained by inserting a control statement (given) here in a context where it shouldn't ever affect the program flow? Are you just showing another way to do it or is there some subtlety to given which I have failed to grok?

      It's "just" another way to do it.

      What's the point of writing anything you write one way, and not another way?

      given is a syntactically nice way to to assign to my $_, which I happen to like. I don't see why it has to be connected to control flow. (Which is also the reason why the given/when construct is not spelled select/case in Perl: both given and when can be used independently).

      The strength of the topic variable $_ is that you can use it without writing $_ explicitly. given takes this one step further and makes the assignment also implicit.

      I also happen to like given because in Perl 6 you can call any method doit on $_ by writing .doit, the method doesn't have to be special for that in any way.

      So when you write lots of method calls on the same object, you can save a typing this way:

      # Perl 6 code here given $svg-canvas { .rect: x => 5, y => 5, height => 90, width => 190; .circle: cx => 100, cy => 50, r => 20, style => 'fill: black'; .text: 'Some caption', x => 20, y => 15; # etc. }
      Perl 6 - links to (nearly) everything that is Perl 6.
        Ah, cool... Thanks for the final note on the Perl 6 syntax. I'd not heard about that piece and it's very reminiscent of an old with syntax from (IIRC) Delphi/Object Pascal that I've often missed having around in other languages.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (3)
As of 2025-11-17 13:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What's your view on AI coding assistants?





    Results (72 votes). Check out past polls.

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.