v0 = "hoge"
p0 = proc {|v0| v0 * 2}
p0.call (7)
p v0 # => 7

p1 = proc {|v1| v1 * 2}
v1 = "hoge"
p1.call (7)
p v1 # => "hoge"

# proc の位置の違いがポイントです。

最近のレス見て試してみたらこうなったんだけど
正直気持ち悪いと思ったよ。
これは仕様なの?仕様だとしてこうした理由は

1. 実装が楽なのでやむなく選択
2. 過去バージョンとの互換性のため
3. あえてこの仕様

のうちどれなのかな。