use autodie; use Fcntl ':flock', ':seek'; open my $fh, "+<", "mail"; flock $fh, LOCK_EX; my $text = do {local $/; <$fh>}; seek $fh, SEEK_SET, 0; # Only needed if you're going to write. truncate $fh, 0; close $fh;