@@ -11,17 +11,31 @@ PerlOnJava implements Perl's dynamic type system in Java, supporting Perl's thre
11
11
```
12
12
RuntimeBase (abstract)
13
13
├── RuntimeScalar
14
- │ ├── RuntimeScalarReadOnly (cached immutable values)
15
- │ └── RuntimeBaseProxy (abstract - for lvalues)
14
+ │ ├── RuntimeGlob
15
+ │ │ ├── [contains] RuntimeScalar(RuntimeIO)
16
+ │ │ └── RuntimeStashEntry
17
+ │ └── RuntimeBaseProxy (abstract - for lvalues and special variables)
18
+ │ ├── RuntimeScalarReadOnly (cacheable immutable values)
16
19
│ ├── RuntimeArrayProxyEntry
17
20
│ ├── RuntimeHashProxyEntry
18
21
│ ├── RuntimeArraySizeLvalue
19
22
│ ├── RuntimePosLvalue
20
- │ └── RuntimeVecLvalue
23
+ │ ├── RuntimeSubstrLvalue
24
+ │ ├── RuntimeVecLvalue
25
+ │ └── ScalarSpecialVariable (variables such as $`, $&, $', or $1)
26
+ ├── PerlRange
27
+ ├── RuntimeCode
28
+ ├── RuntimeList
21
29
├── RuntimeArray
30
+ │ ├── [contains] ArraySpecialVariable
31
+ │ └── [contains] AutovivificationArray
22
32
└── RuntimeHash
33
+ ├── [contains] HashSpecialVariable
34
+ ├── [contains] AutovivificationHash
35
+ └── RuntimeStash
23
36
```
24
37
38
+
25
39
### Scalar Type System
26
40
27
41
PerlOnJava uses integer constants to represent scalar types, defined in ` RuntimeScalarType ` :
@@ -165,6 +179,7 @@ Abstract base class for all lvalue proxies:
165
179
3 . ** RuntimeArraySizeLvalue** : ` $#array ` (last index of array)
166
180
4 . ** RuntimePosLvalue** : ` pos() ` function lvalue
167
181
5 . ** RuntimeVecLvalue** : ` vec() ` function lvalue
182
+ 6 . ** RuntimeSubstrLvalue** : ` substr() ` function lvalue
168
183
169
184
## Reference and Dereferencing
170
185
0 commit comments