use Benchmark; my $sub=eval 'sub {('.join(',',map{'$s'.$_}1..1000).')=@base}'; @base=(1..1_000); timethese(1_000_000,{ '$'=>$sub, '@'=>sub{@s=@base;} });