Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

schwern (1528)

  (email not shown publicly)
AOL IM: MichaelSchwern (Add Buddy, Send Message)

Schwern can destroy CPAN at his whim.

Journal of schwern (1528)

Monday August 06, 2007
06:48 PM

Beautiful Code Blog

[ #34016 ]

I've been invited to write in the new Beautiful Code Blog set up by O'Reilly to mirror their new book Beautiful Code. I'm intrigued and a little terrified at the idea. It will be fun to be the Perl programmer talking about beautiful code. :)

Suggestions welcome.

My first may well be this:

        use LWP::Simple;
        my $html = get "";

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • I've seen that many programmers coming to Perl from other languages aren't aware of or are afraid of using is 'map' and 'grep'.

    I think these two are among the most beautiful operators that exists in Perl and deserve some nice examples.

  • Congrats. And that's a great first example. There's so much hidden away behind an interface that's intuitive (though I think the abstraction is marred by the lack of a thrown exception). I think 'use Fatal' would also be fantastic. It seems like a simple example, but it's really beautiful (to me) in what it does.

  • I might find it more beautiful if there was an explicit import:

    use LWP::Simple 'get'

    What happened to the mantra from Exporter.pod?

    "Do not export anything else by default without a good reason! ... Exports pollute the namespace of the module user."
    • I hate that line.

      Oh, its intentions are good. Its there to make authors think and to avoid modules like POSIX which export nearly everything. So often people only hear the "do not export anything by default" and miss the "without a good reason" part.

      If your module doesn't do anything useful but provide functions, go ahead and export some useful defaults. The user's going to have to import stuff anyway, give them a leg up. Why? Choice. Specifically the user's.

      Any module which exports by default can be
      • I appreciate your line of thinking, schwern. Thanks for clarifying.

        Personally, I have mixed feelings about it. Some default exports can be handy and look clean. However, I like to grep my code for a function name and be able to figure out where it came from.

        OO code tends to be traceable to the object construction. But with with procedural code, if there's no explicit export, it is more difficult to track down where a function comes from, and that can slow me down. (Yes, I know there are modules and techniqu
        • So, although I see both sides, I tend to favor explicit imports so I can see where things come from.

          The wonderful thing is as a user of the module you always have that option no matter what the module author chooses to do.