I don't think using the $HOME environment variable is a
no-brainer on Unix at all -- though it may be fine for simple
applications without high security requirements. Remember,
$HOME is just an environment variable, and the user may set
it to whatever he/she wants. Worse, it may be incorrectly set
when running a script in unusual environments -- via su, for
example, I've sometimes seen $HOME incorrectly set to root's
home directory.
Finally, some systems may use $LOGDIR instead of $HOME
(admittedly, this is very rare).
Also, '~/.myapp' is shell-specific which is not very
portable, failing on many versions of /bin/sh, for instance.
If the whole application is written Perl, I'd look at
using the getpwuid/getpwnam functions on Unix. The Perl $<
and $> special variables and the getlogin function may also
prove handy.