Since all the operations are actually delegated you're better off tying a gensym, and then using my $fh = (tied $ftpfh)->tmpfh;. Just remember to call (tied $ftpfh)->taint; if you want to commit changes at DESTROY time.