ASCII has nothing to do with it. You can use those operators on any string of bytes, whether the data is ASCII, the result of inet_aton or a struct to pass to a system call. The operators work independantly of how the data is interpreted.
Now, $letter ^ ' ' will not toggle the case of the letter in all encodings, but that's a (simple) algorithm that uses ^ and not ^ proper.
Here's an example which demonstrates that ^ work no matter how the data was encoded:
use Socket qw( inet_aton inet_ntoa );
my $ip = inet_aton('10.0.0.155');
my $mask = inet_aton('255.255.255.240');
my $broadcast = $ip | ~$mask;
print(inet_ntoa($broadcast), "\n"); # 10.0.0.159
It's definitely a language feature, and I believe an uncommon one. You can't do that in C or Java, for example.
|