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.
In reply to Re^8: Incrementing a large number without Math::BigInt
by ikegami
in thread Incrementing a large number without Math::BigInt
by Cap'n Steve
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |