home *** CD-ROM | disk | FTP | other *** search
- package PPM::Archive;
-
- use strict;
-
- sub new {
- my $self = shift;
- my $file = shift;
- my $o = bless {
- file => $file,
- }, ref($self) || $self;
- $o->select_handler;
- $o->load;
- return $o;
- }
-
- sub rebless {
- my $self = shift;
- my $obj = shift;
- bless $obj, ref($self) || $self;
- }
-
- sub select_handler {
- my $o = shift;
- my $f = $o->{file};
- if ($f =~ /\.(?:tar(?:\.gz)?|tgz)$/i) {
- require PPM::Archive::Tar;
- PPM::Archive::Tar::->rebless($o);
- }
- # Compress::Bzip2 doesn't yet compile or pass its 'make test', so we probably
- # shouldn't support it yet. I'll contact the author and see if he's actually
- # maintaining the module.
- # elsif ($f =~ /\.tar\.(?:bz(?:ip)?2)$/i) {
- # require PPM::Archive::Tar;
- # PPM::Archive::Tar::->rebless($o);
- # }
- elsif ($f =~ /\.zip$/i) {
- require PPM::Archive::Zip;
- PPM::Archive::Zip::->rebless($o);
- }
- else {
- die "Unsupported PPM archive format";
- }
- }
-
- 1;
-