# Range as conditional expr

**URL:** <https://www.ruby-forum.com/t/range-as-conditional-expr/97775>\
**Category:** Ruby\
**Created:** [July 10, 2006, 3:27pm UTC](https://www.ruby-forum.com/t/range-as-conditional-expr/97775 "2006-07-10T15:27:57Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [July 10, 2006, 3:27pm UTC](https://www.ruby-forum.com/t/range-as-conditional-expr/97775/1 "2006-07-10T15:27:57Z")

</div>

Hi,

## I am reading “Programming Ruby” [a.k.a. Pickaxe] and I found example

## while gets print if /a/ … /e/ end

## but one does not work. However, after changing it to:

## while gets print if (/a/=~$_) … (/e/=~$_) end

it works.  
But, what is the problem with the first version?

Regards

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [July 10, 2006, 6:17pm UTC](https://www.ruby-forum.com/t/range-as-conditional-expr/97775/2 "2006-07-10T18:17:59Z")

</div>

In the Second Edition of the Pickaxe, on page 68 it says:

```
In older versions of Ruby, bare ranges could be used as
conditions in if, while, and similar statements. You
could, for example, have written the previous code
fragment as

while gets
    print if /start/../end/
end

This is no longer supported. Unfortunately, no error is
raised; the test will simply succeed each time.

```

Hope this answers your question.

Cheers

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [July 11, 2006, 2:30pm UTC](https://www.ruby-forum.com/t/range-as-conditional-expr/97775/3 "2006-07-11T14:30:41Z")

</div>

Thanks Steve. I need to obtain 2nd edition indeed.

Regards
