# Puzzled?

**URL:** <https://www.ruby-forum.com/t/puzzled/96723>\
**Category:** Ruby\
**Created:** [July 1, 2006, 3:04am UTC](https://www.ruby-forum.com/t/puzzled/96723 "2006-07-01T03:04:04Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![vcivelek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f04885/32.png) [@vcivelek](https://www.ruby-forum.com/u/vcivelek)\
**Post date:** [July 1, 2006, 3:04am UTC](https://www.ruby-forum.com/t/puzzled/96723/1 "2006-07-01T03:04:04Z")

</div>

Hi,  
I have a question…

Why the below snippet,

[“foo”,“bar”,“baz”].each do |s|  
m = /^ba(.\*?)$/.match(s)  
puts m[0]  
end

gives the following error?

test.rb:8: undefined method `[]’ for nil:NilClass (NoMethodError)

Regards,  
Volkan

---

<div class="post-metadata">

**Author:** ![vcivelek](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/f04885/32.png) [@vcivelek](https://www.ruby-forum.com/u/vcivelek)\
**Post date:** [July 1, 2006, 3:18am UTC](https://www.ruby-forum.com/t/puzzled/96723/2 "2006-07-01T03:18:09Z")

</div>

Regexp#match returns nil if it doesn’t match anything. On the first  
run through your each statement, s is “foo”, which doesn’t match  
against your regex. That means m is nil, and so you get an error when  
trying to grab m[0].
