For @list (where you're using |), remember that Perl's | operator is the bitwise or operator, e.g., 1 | 2 results in the value '3'. You probably do understand this one, it's just that you're temporarily confused.
For the difference between the other two, checking1 perlop will yield this nugget "Using 'or' for assignment is unlikely to do what you want; see below."
1 I'm using Strawberry Perl 5.10.0
In reply to Re: 'or' versus '||' - Unexpected Results
by swampyankee
in thread 'or' versus '||' - Unexpected Results
by cmv
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |