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.
  • It's hard to believe, it's hard to describe... I think that one really needs to see it [cpan.org] to grasp the sheer size of it! It's quite simply amazing.

    --

    -- Robin Berjon [berjon.com]

    • Re:Link (Score:2, Funny)

      by autarch (914) on 2002.03.13 14:24 (#5845) Homepage Journal
      So after I wrote my journal entry I couldn't stop looking (you know, like a traffic accident ;) There's some really great stuff in there.

      Meta::Imdb::Get - for getting info off of IMDB.

      Meta::Math::Matrix - cause once you have that IMDB data you just _know_ you'll want to do some matrix math with it!

      Of course, the matrix module doesn't implement any useful methods, like multiplication. It just has a constructor and methods to get and set individual matrix elements.

      Then, there's the Meta::Ds classes, including Meta::Ds::Ohash, which implements an ordered hash, _just like_ Tie::IxHash (which has been on CPAN for _years_). It also implements Meta::Ds::String with handy methods like set_text, for when $string = "text" is just too damn complicated.

      There's a butt-load of XML related stuff, both generic and Docbook. A config file reader (or more than one, I can't tell?). Then we move over to Meta::Utils, which has Meta::Utils::String! This contains such gems as this:


      sub compare($$) {
              my($a,$b)=@_;
              return($a cmp $b);
      }


      Because "cmp" is just not sufficient for me!

      There's some code under Neta::Widget::Gtk cause _obviously_ none of this would be useful without Gtk support. Of course, 2 of the 4 modules in that hierarchy are empty placeholders.

      How about some DB stuff? You got it. Check out Meta::Db::Dbi, which contains such gems as this:


      sub begin_work($) {
              my($self)=@_;
              my($sth)=$self->{HANDLE}->begin_work();
              if(!defined($sth)) {
                      Meta::Utils::System::die("unable to begin_work");
              }
      }


      Umm, the begin_work method does _not_ return a statement handle, but this code will work because it does it does return a boolean result code.

      The doubly amusing thing is that this is a DBI wrapper that it mostly has pretty much exactly the same names as the relevant DBI methods! When most people write DBI wrappers they at least make it simpler than DBI in various ways.

      Meta::Db::Reserved contains some 500 or so lines like this in a BEGIN{} block:


      $hash->{"ABS"};
      $hash->{"ABSOLUTE"};


      Apparently, it contains a list of all the reserved words for _every_ RDBMS under the sun. Um, useful.

      Then there's modules that simply define a Class::DBI subclass for a table like "person" for a movie database or "section" for a man page schema.

      Apparently it all interacts with the Aegis system in some strange way, since various random classes (like the SOAP server class) make calls to Aegis-related modules.

      Ok, I really need stop and take a tranquilizer now. I feel funny.
      • Meta::Imdb::Get - for getting info off of IMDB. Meta::Math::Matrix - cause once you have that IMDB data you just _know_ you'll want to do some matrix math with it!

        Didn't you know? That method is specially designed for information retrieved from IMDB about The Matrix. :-P

        Sorry, I couldn't resist