local が宣言でないというのは use strict してみりゃわかります。
local は既存の変数の値だけを一時的に差し替えて利用するためのアレですから。