Adding support for PAR
William McKee <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.petal |
|---|---|
| Message-ID | <[email protected]> |
I needed to add support to Petal and MKDoc for use within PAR archives. It was a pretty simple modification to Petal/Hash.pm and MKDoc/XML/Decode.pm. I've attached a diff for Petal to this email. Is anyone else working with PAR archives yet? They're great when putting applications onto other servers where you are not in control of the root account. They can include XS but I usu. try to get the host to install the few XS modules I need so as to avoid needing to cross compile. William -- Knowmad Services Inc. http://www.knowmad.com
Petal-Hash.pm-2.15.diff
(text/plain, 1.2 KB)
--- /home/william/local/Petal/lib/Petal/Hash.pm 2004-06-04 07:57:18.000000000 -0400
+++ Hash.pm 2005-02-25 14:29:32.000000000 -0500
@@ -8,6 +8,25 @@
# import all plugins once
foreach my $include_dir (@INC)
{
+ my @modules;
+ # handle PAR archives
+ if (ref $include_dir eq 'CODE')
+ {
+ next unless keys %PAR::LibCache; # skip if PAR is not loaded
+ while (my ($filename, $zip) = each %PAR::LibCache)
+ {
+ my @mods = $zip->membersMatching( "Petal/Hash/" );
+ foreach my $mod (@mods)
+ {
+ my $fn = $mod->fileName;
+ my ($pm) = $fn =~ /\/(\w+)\.pm$/;
+ warn "$fn = $pm";
+ push @modules, $pm;
+ }
+ }
+ }
+ else
+ {
my $dir = "$include_dir/Petal/Hash";
if (-e $dir and -d $dir)
{
@@ -16,12 +35,14 @@
next;
};
- my @modules = map { s/\.pm$//; $_ }
+ @modules = map { s/\.pm$//; $_ }
grep /\.pm$/,
grep !/^\./,
readdir (DD);
closedir DD;
+ }
+ }
foreach my $module (@modules)
{
@@ -31,7 +52,6 @@
$@ and warn "Cannot import module $module. Reason: $@";
$MODIFIERS->{lc ($module) . ':'} = "Petal::Hash::$module";
}
- }
}