QuotePerls Strings sind nicht nullterminiert, sondern haben eine Laengeninformation (was im uebrigen die wesentlich sinnvollere Speicherstruktur ist). Man kann in Perl ohne weiteres Nullzeichen in der Mitte eines Strings einbauen.
Wow, danke fürs Umdrehen meiner Wörter. Wo genau habe ich "allgemeingültige" Aussage über perl-Strings losgelassen? Wo? Mit quote bitte.
Lies dir meine Aussage nochmal im direkten Kontext zum vorgestellten quote durch:
QuoteQuoteDurch dein split erzeugst du keine Hexzahlen sondern ASCII-Zeichen.
Genauer gesagt nul-terminierte Char-Arrays.
Wie kommst du in dieser Konstellation darauf, ich könnte über perl-Strings im Allgemeinen reden?
Ich habe gesagt, dass bei
diesem split nul-terminierte Char-Arrays herauskommen. Was im Übrigen durchaus der Wahrheit entspricht.
But, don't believe me:
perldoc Devel::Peek|less -p'\\0'
QuoteThe \0 at the end indicate that this PV is properly NUL-terminated.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
perl -MDevel::Peek -e 'Dump [ split //, q{35312c38} ]'
SV = RV(0x817feb0) at 0x815399c
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x8153678
SV = PVAV(0x8157c64) at 0x8153678
REFCNT = 2
FLAGS = ()
IV = 0
NV = 0
ARRAY = 0x8175830
FILL = 7
MAX = 7
ARYLEN = 0x0
FLAGS = (REAL)
Elt No. 0
SV = PV(0x8153cb0) at 0x8152ce8
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x816ea58 "3"\0
CUR = 1
LEN = 4
Elt No. 1
SV = PV(0x8153c74) at 0x8153660
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x816bd08 "5"\0
CUR = 1
LEN = 4
Elt No. 2
SV = PV(0x8153c8c) at 0x815366c
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x8174d50 "3"\0
CUR = 1
LEN = 4
Elt No. 3
SV = PV(0x8153d04) at 0x817d7dc
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x815b140 "1"\0
CUR = 1
LEN = 4
Und was sehen wir da? "3"\0, "5"\0, etc. Wow. Nach der Aussage aus perldoc würd ich fast vermuten, hier liegen nul-terminierte Char-Arrays im Speicher vor. Aber was weiß ich schon.