typical object systems are defined in terms of, well, object systems has input_file => ( is => 'ro', isa => File, coerce => 1, required => 1, ); wouldn't it be nice to be able to say what we mean? has_file 'input_file';