in reply to How is perl able to handle the null byte?
In C a string is nothing more than a pointer to the first character of the string. C can't know how long a string is except by counting all the characters from the start until the first 0 byte. You need to know the length of a string in order to do things like copy or compare them.
Perl's strings are C structs that include (amongst other things) a pointer to the first character, AND the length of the string. Since perl doesn't need a special terminating character you can use 0 characters in the middle of a string too.
Note that internally perl strings are still 0-terminated in order to facilitate interoperation with functions that expect C style strings. Also note that sending strings with embedded 0 characters to system calls or XS libraries does not always work as you'd expect, though all the buildin string and IO operations (regexes, print etc) should work correctly.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: How is perl able to handle the null byte?
by muba (Priest) on Jun 15, 2006 at 18:56 UTC | |
by Joost (Canon) on Jun 15, 2006 at 19:01 UTC |