このように配列と変数を渡す場合、
受け取り側ではpopを使って切り取って配列と変数に分けるしかないんでしょうか?

&func(@lines,$aaa);

sub func{
local($aaa2);
local(@lines2);
$aaa2 = $pop(@_);
@lines2 = @_;
}