pが受け取った値を表示した後、nilでなくその値を返してくれたら嬉しくないかな。

ary.map do { |x| x * 2 + 1 }
の場合
ary.map do { |x| z = x * 2 + 1; p z; z }
と書いていたところを
ary.map do { |x| p x * 2 + 1 }
と書けて幸せだと思うんだけど。
pがnilを返すことを意図的かつ合理的に使うプログラムはほとんどないだろうし。