in reply to Use modules or roll your own?

If you already have decided that you are using Perl, which is already doing a lot under the carpet, the step to using a module isn't that big.

IMO, a decision to use a module depends more on the module than on the philosophical question of using it module itself. If a module has a bad API (like pointlessly using OO), a difficult manual page or many dependencies, I might opt to role my own.

Abigail

Replies are listed 'Best First'.
Re: Re: Use modules or roll your own?
by demerphq (Chancellor) on Jul 29, 2002 at 12:21 UTC
    Im kind of curious as to what you would consider "pointlessly using OO". Care to expand on that with some examples?

    Cheers,

    Yves / DeMerphq
    ---
    Writing a good benchmark isnt as easy as it might look.

      use Lingua::EN::Numbers; my $n = new Lingua::EN::Numbers; $n -> parse (1281); print $n -> get_string, " fish in the sea.\n";
      Which is the reason I wrote Lingua::EN::Numbers::Easy where you can do:
      use Lingua::EN::Numbers::Easy; print "$N{1281} fish in the sea.\n";
      to do the same.

      Abigail

        The problem there isn't a "pointless use of OO", but rather an API that isn't very sensible. One is tempted to ask why the module has an interface that forces a user to create an instance, give the instance a number, and then retrieve a string from the instance when a simple class method exported would have worked more easily. I mean, then I have to remember whether the current number in the instance is the one I want-- which is the sort of "internal state of object" knowledge the rest of my program shouldn't have to be thinking about. It would bother me a lot less if the module had fewer steps:
        use Lingua::EN::Numbers; my $n = Lingua::EN::Numbers->new; print $n->get_string(1281), " fish in the sea.\n"; #or use Lingua::EN::Numbers qw(get_string); print get_string(1281), " fish in the sea.\n";
        With this sort of interface I have a choice of whether or not to pollute my namespace with a function name (like with CGI.pm, I prefer not to attempt to export all those HTML markup tags as function names).