my ($a,$b)=("a","bb"); printf("/%s/ (%d bytes) /%s/ (%d bytes)\n",$a,length($a),$b,length($b)); $a^=$b^=$a^=$b; printf("/%s/ (%d bytes) /%s/ (%d bytes)\n",$a,length($a),$b,length($b));' #### /a/ (1 bytes) /bb/ (2 bytes) /bb/ (2 bytes) /a/ (2 bytes)