The assignment my ($x, $y, $z) = qw( 1 2 3 ) happens first, i.e. those three variables are assigned the numbers 1 to 3, and this first assignment returns the lvalues, to which the values qw( a b c ) are immediately assigned. Update: In other words, the numbers are assigned to the variables, but then immediately overwritten. Since this is just some example code it doesn't make much sense here, but in theory, you could for example be assigning to tied variables where assigning to the variable has some side effect, then it would make a difference.