in reply to Is there a reason to use "join" instead of just using the period?

I find interpolating/concatanating of any complexity mainly looks messy. Try to add dereferencing hash/array refs or method calls to the mix and it gets worse. I get on better with a template so I often press sprintf into service.
$hotfix = sprintf( q{%s_%s_%s_%s.zip}, $app, $mod, $bld, $hf, );
Expressions, ternaries, refs, method calls, etc. will fit nicely while still, imo, being readable.

Although in the second (simple) case

$fullpath = join(q{/}, $dir, $filename);
looks better to me.

ymmv