You should start thinking of hardware a bit different. For example, in software:
if (cond)
doSomething();
else
doSoemthingElse();
you test cond and depending on its value you execute either doSomething() or doSomethingElse(). In hardware, you basically execute both at the same time and then choose which which answer to propagate and which to ignore.
You may also find it easier to visualize this using gates instead of HDL. A good tool for this is
logisim.
And when you need to write it back in HDL, the
HDL Survival Guide is indispensable.