#!/usr/bin/perl -c
=head1 NAME
MooseX::Types::CacheFileHandle - Type for special cached file handle
=head1 SYNOPSIS
package My::Class;
use Moose;
use MooseX::Types::CacheFileHandle;
has fh => ( isa => 'CacheFileHandle' );
package main;
my $obj = My::Class->new( fh => \*_ );
=head1 DESCRIPTION
This module provides L<Moose> type which represents special cached file handle
- underscore (C<_>) - which is used for C<stat> tests.
=cut
use 5.008;
use strict;
our $VERSION = '0.06';
subtype CacheFileHandle => (
as 'GlobRef',
where {
defined Scalar::Util::reftype($_)
&& Scalar::Util::reftype($_) eq 'GLOB'
&& $_ == \*_
},
optimize_as {
defined $_[0]
&& defined Scalar::Util::reftype($_[0])
&& Scalar::Util::reftype($_[0]) eq 'GLOB'
&& $_[0] == \*_
},
);
1;
__END__
=head1 SEE ALSO
L<Moose::Util::TypeConstraints>, L<File::Stat::Moose>.
=head1 AUTHOR
Piotr Roszatycki <dexter@cpan.org>
=head1 LICENSE
Copyright (C) 2007, 2008, 2009 by Piotr Roszatycki <dexter@cpan.org>.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.