Q: How to use map with multiple statements in the block I'm taking a string and splitting it and then chaining map in.  I want any words that have a length of 5 letters or greater reversed.  
If I do this 
str.split(' ').map { |word| word} 

it will return an array with all the words inside.
If I do this though
str.split(' ').map { |word| words; word.reverse if word.length >= 5 }

All I get back are the reversed words.  So how can I do both? 
side note - I'm trying to be understand how to use blocks properly and while I've made some progress I'm still not completely fluent.  

A: What about this one?
str.split.map { |word| word.length >= 5 ? word.reverse : word }


A: str.split.map { |word| word.tap { |w| w.reverse! if w.length >= 5 } }

Using Object#tap on the word we always return a word itself, while it's being reversed inplace when it's long enough.
Your approach failed because postfix if implies returning nil when the condition is not met.
