@_ の要素は実引数のコピーではなくエイリアスだから、文字列渡しでも my $dat = shift; とかするまではコピーは発生しないよ。
つっても>>430じゃサブルーチンの戻り値がその文字列だから結局コピーは不可避だけど。

処理するしないにかかわらずコピーを避けるなら、
kakou(\$dat, $in);
sub kakou {
 my($dat_ref, $in) = @_;
 return unless $in;
 # $$dat_ref に直接ほげほげする
}