use File::Temp; my ($FILE, $PATH) = File::Temp::tempfile(DIR => "/some/directory"); my $res = $ua->request(HTTP::Request->new(GET => $url), sub { print $FILE $_[0]; ...update transfer speed statisics... }); close($FILE); if ($res->is_success) { # determine new name from $res rename($PATH, ...new path name...); } else { unlink $PATH; }