---
name: "IO::InnerFile"
section: "3pm"
platform: "linux"
package: "perl-io-stringy"
version: "2.113-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/IO::InnerFile"
---

# IO::InnerFile(3pm)

define a file inside another file

## NAME

IO::InnerFile - define a file inside another file

## SYNOPSIS

```
    use strict;
    use warnings;
    use IO::InnerFile;
    # Read a subset of a file:
    my $fh = _some_file_handle;
    my $start = 10;
    my $length = 50;
    my $inner = IO::InnerFile->new($fh, $start, $length);
    while (my $line = <$inner>) {
        # ...
    }
```

## DESCRIPTION

If you have a file handle that can `"seek"` and `"tell"`, then you can open an IO::InnerFile on a range of the underlying file.

## CONSTRUCTORS

IO::InnerFile implements the following constructors.

### new

```
    my $inner = IO::InnerFile->new($fh);
    $inner = IO::InnerFile->new($fh, 10);
    $inner = IO::InnerFile->new($fh, 10, 50);
```

Create a new IO::InnerFile opened on the given file handle. The file handle supplied **MUST** be able to both `"seek"` and `"tell"`.

The second and third parameters are start and length. Both are defaulted to zero (`0`). Negative values are silently coerced to zero.

## METHODS

IO::InnerFile implements the following methods.

### add\_length

```
    $inner->add_length(30);
```

Add to the virtual length of the inner file by the number given in bytes.

### add\_start

```
    $inner->add_start(30);
```

Add to the virtual position of the inner file by the number given in bytes.

### binmode

```
    $inner->binmode();
```

This is a NOOP method just to satisfy the normal IO::File interface.

### close

### fileno

```
    $inner->fileno();
```

This is a NOOP method just to satisfy the normal IO::File interface.

### flush

```
    $inner->flush();
```

This is a NOOP method just to satisfy the normal IO::File interface.

### get\_end

```
    my $num_bytes = $inner->get_end();
```

Get the virtual end position of the inner file in bytes.

### get\_length

```
    my $num_bytes = $inner->get_length();
```

Get the virtual length of the inner file in bytes.

### get\_start

```
    my $num_bytes = $inner->get_start();
```

Get the virtual position of the inner file in bytes.

### getc

### getline

### print LIST

### printf

### read

### readline

### seek

### set\_end

```
    $inner->set_end(30);
```

Set the virtual end of the inner file in bytes (this basically just alters the length).

### set\_length

```
    $inner->set_length(30);
```

Set the virtual length of the inner file in bytes.

### set\_start

```
    $inner->set_start(30);
```

Set the virtual start position of the inner file in bytes.

### tell

### write

## AUTHOR

Eryq (*eryq@zeegee.com*). President, ZeeGee Software Inc (*http://www.zeegee.com*).

## CONTRIBUTORS

Dianne Skoll (*dfs@roaringpenguin.com*).

## COPYRIGHT & LICENSE

Copyright (c) 1997 Erik (Eryq) Dorfman, ZeeGee Software, Inc. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
