int *hoge(void)
{
  int i = 5;
  return &i;
}

int main(void)
{
  int *a = hoge();
  printf("%d\n", *a);
  return 0;
}

Cでこういうのって、関数hogeのローカル変数のアドレスを返して
いるわけで、あきらかに問題ありですよね?(これだと普通に動いちゃう場合が多いけど)

perlの場合の下記のようなコードって、これも一見普通に問題なく動いてるように
見えるのですが、やはり問題ありなのでしょうか? それともperl的にはこのような
コードはOKなのでしょうか?

my $a = hoge();
print "$$a\n";

sub hoge
{
  my $i = 5; # 数値でも文字列でも何でもいいのですが
  return \$i;
}