package test; # not 'test.pm' use Moose; use File::Temp; has tempfile => ( is => 'rw', isa => 'File::Temp', lazy => 1, default => sub { File::Temp->new(UNLINK => 1, SUFFIX => '.tmp') }, ); sub BUILD { my $self = shift; print { $self->tempfile } "I am here"; }