---
name: "CPANPLUS::Internals::Extract"
section: "3pm"
platform: "linux"
package: "perl-cpanplus"
version: "0.9916-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/CPANPLUS::Internals::Extract/3pm"
---

# CPANPLUS::Internals::Extract(3pm)

internals for archive extraction

## NAME

CPANPLUS::Internals::Extract - internals for archive extraction

## SYNOPSIS

```
    ### for source files ###
    $self->_gunzip( file => 'foo.gz', output => 'blah.txt' );
    ### for modules/packages ###
    $dir = $self->_extract( module      => $modobj,
                            extractdir  => '/some/where' );
```

## DESCRIPTION

CPANPLUS::Internals::Extract extracts compressed files for CPANPLUS. It can do this by either a pure perl solution (preferred) with the use of `"Archive::Tar"` and `"Compress::Zlib"`, or with binaries, like `"gzip"` and `"tar"`.

The flow looks like this:

```
    $cb->_extract
        Delegate to Archive::Extract
```

## METHODS

### $dir = \_extract( module =\> $modobj, \[perl =\> '/path/to/perl', extractdir =\> '/path/to/extract/to', prefer\_bin =\> BOOL, verbose =\> BOOL, force =\> BOOL\] )

`"_extract"` will take a module object and extract it to `"extractdir"` if provided, or the default location which is obtained from your config.

The file name is obtained by looking at `"$modobj->status->fetch"` and will be parsed to see if it's a tar or zip archive.

If it's a zip archive, `"__unzip"` will be called, otherwise `"__untar"` will be called. In the unlikely event the file is of neither format, an error will be thrown.

`"_extract"` takes the following options:

- module

  A `"CPANPLUS::Module"` object. This is required.

- extractdir

  The directory to extract the archive to. By default this looks something like:\
       /CPANPLUS\_BASE/PERL\_VERSION/BUILD/MODULE\_NAME

- prefer\_bin

  A flag indicating whether you prefer a pure perl solution, ie `"Archive::Tar"` or `"Archive::Zip"` respectively, or a binary solution like `"unzip"` and `"tar"`.

- perl

  The path to the perl executable to use for any perl calls. Also used to determine the build version directory for extraction.

- verbose

  Specifies whether to be verbose or not. Defaults to your corresponding config entry.

- force

  Specifies whether to force the extraction or not. Defaults to your corresponding config entry.

All other options are passed on verbatim to `"__unzip"` or `"__untar"`.

Returns the directory the file was extracted to on success and false on failure.
