例如,Perldata文档中Perl中的标量字符串仅受可用内存的限制,但我强烈怀疑在现实生活中会有一些其他限制.
我正在考虑以下想法:
2 ** 31
,2 ** 32
,2 ** 63
或2 ** 64
字节.那么,在现实生活中限制Perl字符串长度的其他因素是什么?出于实际目的,应该考虑一个好的字符串长度?
ike*_*ami 14
它跟踪缓冲区的大小和其中的字节数.
$ perl -MDevel::Peek -e'$x="abcdefghij"; Dump($x);'
SV = PV(0x9222b00) at 0x9222678
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x9238220 "abcdefghij"\0
CUR = 10 <-- 10 bytes used
LEN = 12 <-- 12 bytes allocated
Run Code Online (Sandbox Code Playgroud)
在32位构建的Perl上,它对这些值使用32位无符号整数.这(足够大)足以创建一个字符串,用于占用进程的整个4 GiB地址空间.
在64位版本的Perl上,它对这些值使用64位无符号整数.这(确切地)足够大,可以创建一个字符串,用于占用进程的整个16 EiB地址空间.
文档是正确的.字符串的大小仅受可用内存的限制.