Thanks. I think the difference is, as Abigail-II noted above, Win32 display drivers tend to represent the null (chr(0)) with a blank glyph on the screen whereas some (all?) *nix DDs 'display' a zero width glyph.
P:\test>perl -l
sub swab{ substr($_[0],$_[1],1)^=substr($_[0],$_[2],1)^=substr($_[0],$
+_[1],1)^=substr($_[0],$_[2],1); }
$s='AB';
swab($s,0,1), print "'$s' : ", sprintf "%02x "x2, unpack 'C*',$s for 1
+..10;
^Z
'BA' : 42 41
' B' : 00 42
' ' : 00 00
' ' : 00 00
' ' : 00 00
' ' : 00 00
' ' : 00 00
' ' : 00 00
' ' : 00 00
' ' : 00 00
As you can see, although they show up as blank glyphs and therefore look like spaces, they are actually nulls.
I think if you try this on your machine, you'll see that the contents of $s at each stage is the same, it's just the way the nulls get displayed that is different.
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
If I understand your problem, I can solve it! Of course, the same can be said for you.
|