It seems that $; is different. In Linux it is \034. On windows is any weird character. As the perlvar manpage explains, $; values cannot be safe if you have binary keys. I think ActiveState might have changed its value to a unicode value they think is not much used.
Update: Accordingly with some folks on #perl ActiveState use the same value. Just don't know why the print prints that weird character.