in reply to (Golf) Mad-Lib Generator

Here is my trial at 112. Basically, I joined the 2 substitutions in one, removed unneeded parens, used chop instead of chomp. The regex looks pretty confusing though.

Remeber, STDERR is unbuffered, so no need to $|++ it.

$_=join'',<>;s#\[([^\]]*?(\?)?)\]#$2?do{print STDERR"$1 "; $_=<>;chop;$_}:do{@f=split/\|/,$1;$f[rand@f]}#ge;print
Update: removed STDIN.