This isn't addressing specifically how Perl is compiled, but rather how Perl implements the notion of characters: Because of Perl's Unicode implementation, a Perl character isn't necessarily a single byte. Consider the following:
binmode STDOUT, ':encoding(utf8)'; my $cp = "\x{3a3}"; print "$cp\n"; # Prints an upper case sigma. print ord( $cp ), "\n"; # prints 931. print 0x00FF & ord( $cp ), "\n"; # prints 163. if( ord( $cp ) > 255 ) { print "Wide character.\n"; } if( ord( $cp ) != ( 0x00FF & ord( $cp ) ) ) { print "Wide character.\n"; }
If you're not dropping into XS, what application is there for getting at the actual value of CHAR_BIT during compilation? (Just to satisfy my own curiosity, and to learn something new).
Update: To be more clear in my final question: I do understand that the C implementation could possibly be compiled with CHAR_BIT != 8. We see checks for it within the XS code of Scalar::Vec::Util and Math::MPC, for example. But what I'm curious about is how it makes any difference from the perspective of a Perl script that doesn't use XS (aside from the potential that some XS modules will break because they're not checking like they should).
Dave
In reply to Re: CHAR_BIT != 8
by davido
in thread CHAR_BIT != 8
by ribasushi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |