Social & Tech meets, laptops and Module::Pluggable

2shortplanks on 2004-01-05T23:39:39

Haven't been doing much recently. Went into work today and picked up my x86 machine that has svn installed on it so I can make changes to my work svn repository again - petdance sent me a load of patches for Test::DatabaseRow I should look at integrating.

Announced the London.pm social meet and hinted at the tech meet. I really need to sort out the speakers tomorrow. I've got a bunch of emails off of people which I need to go though and check that they're okay to talk, and I might need to russle up another couple of speakers.

Been having a look at muttley's Module::Pluggable. It looks nice, but it really won't work with PAR, and I really really like PAR. I think we could special case it. This code (or something like it) should detect when we're dealing with a magic PAR reference is in @INC and deal with it. It's a matter of changing the code that looks in the directories in @INC

  # go through our @INC                                                                                                                                                 
  foreach my $dir (@SEARCHDIR) {                                                                                                                                        
                                                                                                                                                                        
    if (exists $INC{'PAR.pm'} && $dir eq \&PAR::find_par) {                                                                                                             
                                                                                                                                                                        
      # find all the par files in @PAR_INC and in the directories                                                                                                       
      # that are in @INC and contain *.par                                                                                                                              
      my @pars = ...;                                                                                                                                                   
      foreach my $par (@pars)                                                                                                                                           
      {                                                                                                                                                                 
         # get a list of the files for each par file                                                                                                                    
         my $zip = PAR::par_handle($par);                                                                                                                               
         my @members = $zip->members;                                                                                                                                   
                                                                                                                                                                        
         # look for plugins in members                                                                                                                                  
         ...                                                                                                                                                            
      }                                                                                                                                                                 
                                                                                                                                                                        
      next;                                                                                                                                                             
     }                                                                                                                                                                  
                                                                                                                                                                        
    # rest of simon's existing code for looking for plugins normally                                                                                                    
    # in each of the directories here                                                                                                                                   
   ...                                                                                                                                                                  
  }                                                                                                                                                                     
                                                                                                                                                                        
Note the large amount of ... still left to do. Should probably write some tests first.

Of course, it'd be easier if PAR had a way of saying 'get me all files that look like this glob pattern'. Hmm. maybe should mention that on the PAR list.

Think about such things tomorrow.