Stories
Slash Boxes
Comments
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

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • How does it compare to Switch [cpan.org]?

    That module seems to do a better Job at simulating the classic switch style but uses a source filter. Your module could probably benefit a lot from the & prototype. Or is there a reason you didnt use prototypes?

    • by broquaint (2964) on 2005.05.21 9:13 (#40605) Journal
      Good questions!
      How does it compare to Switch [cpan.org]?
      I'd like to think that in terms of complexity S::P is a simpler module because it uses Perl's native syntax. It also has an extensible smart matching system, so it can be used with your own objects. The main intention of the module is in the name - a perlish implementation of switch, so it should be subject to all the wonderful features and quirks of perl.
      That module seems to do a better Job at simulating the classic switch style but uses a source filter. Your module could probably benefit a lot from the & prototype. Or is there a reason you didnt use prototypes?
      Indeed, Mr. Conway's Switch [cpan.org] provides a much more natural syntax for switch, but through the magic for source filters. Unfortunately, this means the actual switch code can be rather hairy to debug and means that it goes unused in many production systems.

      As for the use of the & prototype, there are a few reasons why I didn't use it. Firstly, it doesn't work how I would like it to - it is desigined to enable one to mimic Perl's builtins, so the block goes first. If there is a way to use the & prototype, and utilise its magical bare block functionality in a different position than the first argument, then I don't know about it :) Also prototypes cripple the the free-form usage of functions, which isn't very perlish at all, which strictly goes against the, er, perlishness of this module.

      Perhaps this should all be in the documentation ...

      --

      broquaint out

      • I very much like modules which have a section on how they differ from similar preexisting modules. It shows the author didn’t just mindlessly go to work. Of course, in case of Switch::Perlish I know enough about the competition to know exactly why you did what you did (great job, btw! neat ways to exploit the native syntax), but not everyone might have that benefit.