すいません、今日他の人間が作ったスクリプトを眺めていて不安になったのですが、

#!/usr/bin/perl

sub testSub {
my @aa = ( 1 , 2 , 3 );
my %bb = ( aa => "aa" , bb => "bb" ) ;

return (\@aa , \%bb);
}

#Main
my @a1;
my %b1;

my ($a2 , $b2) = testSub() ;

@a1=@$a2 ;
%b1=%$b2 ;

かんたんにかくとこんな感じのスクリプトだったのですが、そもそも関数内でmyしている変数のリファレンスを呼び出し側に渡すことってありなんでしょうか?
かなり気持ちが悪い気がして直そうか悩んでいます。ご意見をお願いします。