Archive::Lha::Stream - Archive::Lha::Stream documentation


Archive-Lha documentation Contained in the Archive-Lha distribution.

Index


Code Index:

NAME

Top

Archive::Lha::Stream

SYNOPSIS

Top

  # if you want to read from an archive file
  my $stream = Archive::Lha::Stream->new( file => 'some.lzh' );

  # if you want to read from a string on memory
  my $stream = Archive::Lha::Stream->new( string => $content_of_lzh );
  # just for debugging: you can pass an arrayref of hex strings
  my $stream = Archive::Lha::Stream->new( hex => [qw(5D 00 ...)]' );

DESCRIPTION

Top

This is a factory class to create a proper stream object. Available stream types are file, string, hex.

METHODS

Top

new

takes a hash as an argument and returns a delegated stream object. See SYNOPSIS for the required option.

AUTHOR

Top

Kenichi Ishigaki, <ishigaki@cpan.org>

COPYRIGHT AND LICENSE

Top


Archive-Lha documentation Contained in the Archive-Lha distribution.

package Archive::Lha::Stream;

use strict;
use warnings;
use Carp;

sub new {
  my ($class, %options) = @_;

  my @available = qw( file string hex );
  foreach my $name ( @available ) {
    if ( $options{$name} ) {
      my $package = 'Archive::Lha::Stream::'.ucfirst($name);
      eval "require $package;";
      croak "Can't load stream: $@" if $@;
      return $package->new( %options );
    }
  }
  croak "Can't load stream: available streams are " .
         (join ', ', @available);
}

1;

__END__