package MyTypes; use 5.010; use strict; use warnings; use MooseX::Types -declare => [qw( ExistingFile DataFromFile )]; use MooseX::Types::Moose qw( ArrayRef Str ); use Tie::File; subtype ExistingFile, as Str, where { -e }, message { "file '$_' does not exist" }; subtype DataFromFile, as ArrayRef, where { ref $_ eq "ARRAY" }, message { "argument is not an ArrayRef" }; coerce DataFromFile, from ExistingFile, via { tie my @array, "Tie::File", $_; return \@array }; 1;