Great catch!!! It's an issue of precedence. To elaborate, || is higher up the food chain, and essentially acts upon the last argument of tie instead of on the return value of tie, because parenthesis weren't used. If the OP had used 'or' instead, he would have found that the script dies as he attempts to tie the array, because 'or' is lower down on the precedence list, and thus will attempt instead to act upon the return value of tie.
There's a tutorial on the logical short circuit operators that discusses precedence: Perl Idioms Explained - && and || "Short Circuit" operators. Since I wrote it, I'm ashamed that I missed the OP's bug. ;)
Good job ysth. That's it, I'm sure. ;)
| [reply] |