| MooseX-Types-IO documentation | Contained in the MooseX-Types-IO distribution. |
MooseX::Types::IO - IO related constraints and coercions for Moose
package Foo;
use Moose;
use MooseX::Types::IO 'IO';
has io => (
isa => IO,
is => "rw",
coerce => 1,
);
# later
my $str = "test for IO::String\n line 2";
my $foo = Foo->new( io => \$str );
my $io = $foo->io; # IO::String
# or
my $filename = "file.txt";
my $foo = Foo->new( io => $filename );
my $io = $foo->io; # IO::File
# or
my $foo = Foo->new( io => [ $fh, '<' ] );
my $io = $foo->io; # IO::Handle
This module packages one Moose::Util::TypeConstraints with coercions, designed to work with the IO suite of objects.
my $fh = new IO::File;
$fh->open($_);
IO::File object.
IO::String->new($$_);
IO::String object.
IO::Handle->new_from_fd( @$_ );
IO::Handle object.
Moose, MooseX::Types, MooseX::Types::IO::All, IO::Hanlde, IO::File, IO::String
Fayland Lam, <fayland at gmail.com>
The Moose Team
Rafael Kitover (rkitover) for the patches on RT 46194
Copyright 2008 Fayland Lam, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| MooseX-Types-IO documentation | Contained in the MooseX-Types-IO distribution. |
package MooseX::Types::IO; use warnings; use strict; our $VERSION = '0.03'; our $AUTHORITY = 'cpan:FAYLAND'; use IO qw/File Handle/; use IO::String; use MooseX::Types::Moose qw/Str ScalarRef FileHandle ArrayRef Object/; use namespace::clean; use MooseX::Types -declare => [qw( IO )]; subtype IO, as Object; coerce IO, from Str, via { my $fh = new IO::File; $fh->open($_); return $fh; }, from ScalarRef, via { IO::String->new($$_); }, from ArrayRef[FileHandle|Str], via { IO::Handle->new_from_fd( @$_ ); }; require MooseX::Types::IO_Global; 1; __END__