---
name: "Crypt::Random::Source::Base::Handle"
section: "3pm"
platform: "linux"
package: "libcrypt-random-source-perl"
version: "0.14-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Crypt::Random::Source::Base::Handle"
---

# Crypt::Random::Source::Base::Handle(3pm)

IO::Handle based random data sources

## NAME

Crypt::Random::Source::Base::Handle - IO::Handle based random data sources

## VERSION

version 0.14

## SYNOPSIS

```
    use Moo;
    extends qw(Crypt::Random::Source::Base::Handle);
    sub open_handle {
        # invoked as needed
    }
    # this class can also be used directly
    Crypt::Random::Source::Base::Handle->new( handle => $file_handle );
    # it supports some standard methods:
    $p->blocking(0);
    $p->read( my $buf, $n ); # no error handling here
```

## DESCRIPTION

This is a concrete base class for all IO::Handle based random data sources.

It implements error handling

## ATTRIBUTES

### handle

An IO::Handle or file handle to read from.

### blocking

This is actually handled by `"handle"`, and is documented in IO::Handle.

### allow\_under\_read

Whether or not under reading is considered an error.

Defaults to false.

### reread\_attempts

The number of attempts to make at rereading if the handle did not provide enough bytes on the first attempt.

Defaults to 1.

Only used if `"allow_under_read"` is enabled.

## METHODS

### get

See "get" in Crypt::Random::Source::Base.

When `"blocking"` or `"allow_under_read"` are set to a true value this method may return fewer bytes than requested.

### read

This delegates directly to `"handle"`.

It **DOES NOT** provide the same validation as `"get"` would have, so no checking for underreads is done.

### close

Close the handle and clear it.

### \_read

`"$self->handle->read"` but with additional error checking and different calling conventions.

### \_read\_too\_short

Called by `"_read"` when not enough data was read from the handle. Normally it will either die with an error or attempt to reread. When `"allow_under_read"` is true it will just return the partial buffer.

### open\_handle

Abstract method, should return an IO::Handle to use.

## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=Crypt-Random-Source\> (or bug-Crypt-Random-Source@rt.cpan.org \<mailto:bug-Crypt-Random-Source@rt.cpan.org\>).

## AUTHOR

XXXX XXX'XX (Yuval Kogman) \<nothingmuch@woobling.org\>

## COPYRIGHT AND LICENCE

This software is copyright (c) 2008 by Yuval Kogman.

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