in reply to Re^6: Incrementing a large number without Math::BigInt
in thread Incrementing a large number without Math::BigInt

Yes, I actually noticed this node while searching for a solution to my problem. But isn't that more of an ASCII feature than a Perl one? I wonder why the deincrementing and bit shifting don't work.
  • Comment on Re^7: Incrementing a large number without Math::BigInt

Replies are listed 'Best First'.
Re^8: Incrementing a large number without Math::BigInt
by ikegami (Patriarch) on Apr 26, 2006 at 06:33 UTC

    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.