perl: complete v5.6 features
[sheet.git] / perl.inc.pl
index 23ca6cf5a1f09f30b06137b845049f207e4e8c79..1ca3b4d0c5086c8d55b97b0dce59e1f11e964fd4 100644 (file)
@@ -3,25 +3,33 @@ use utf8;
 +{
        v5.6 => {
                new => [
-                       ['<code>use warnings</code>'],
-                       ['<code>use utf8</code>'],
-                       ['<code>\N{named character}</code>'],
-                       ['<code>our</code>'],
-                       ['<code>v1.2.3</code>'],
-                       ['<code>sub :locked :method</code>'],
-                       ['<code>open $fh, $mode, $expr</code>'],
+                       ['<code>use warnings</code>', 'pragma to enable warnings in lexical scope'],
+                       ['<code>use utf8</code>', 'experimental unicode semantics <small>(completed in v5.8)</small>'],
+                       ['<code>use charnames</code>', 'string escape <code>\N{}</code> to insert named character'],
+                       ['<code>our</code>', 'declare global variables'],
+                       ['<code>v1.2.3</code>', q`represent strings as vector of ordinals, useful in version numbers (<code>printf '%vd'</code> to display)`],
+                       ['<code>0b0</code>', q`binary numbers in literals, <code>printf '%b'</code>, and <code>oct</code>`],
+                       ['<code>sub :lvalue</code>', 'subroutine attribute to return a modifiable value'],
+#                      ['<code>sub :locked :method</code>', 'syntax to declare subroutine attributes'], # can be inferred from :lvalue support
+                       ['<code>open my $fh, $mode, $expr</code>', 'file handles in scoped scalars, third argument for unambiguous file name'],
+                       [q`<code>pack 'q'</code>`, '64-bit integer support (also large files &gt;2GiB)'],
+                       ['<code>sort $coderef ()</code>', 'comparison function can be a subroutine reference; prototype <code>($$)</code> to pass elements as normal <code>@_</code>'],
+                       ['<code>CHECK {}</code>', 'special block called at end of compilation'],
+                       ['<code>/[[:…:]]/</code>', 'POSIX character class syntax such as <code>[[:alpha:]]/</code>'],
+                       # quite a lot more, but leave it at this
                ],
                release => '2000-03-23',
                distro => {
                        debian => 'woody',
                        redhat => '2.1',
+                       solaris => '9', # 2002-05 eol 2014-10
                },
                unicode => '3.0.1',
        },
 
        v5.8 => {
                new => [
-                       [q`<code>no utf8; $unicode</code>`, 'unicode overhaul: additional /\p{}/ properties'],
+                       [q`<code>no utf8</code>`, 'full unicode support, <code>utf8</code> pragma only for script encoding'],
                        [q`<code>binmode $fh, ':perlio'</code>`, 'file handle behaviour altered by PerlIO layers'],
                        [q`<code>open $fh, '-|', @cmd</code>`, 'open list to fork a command without spawning a shell'],
                        [q`<code>open $fh, '>', \$var</code>`, 'perl scalars as virtual files'],
@@ -33,6 +41,7 @@ use utf8;
                distro => {
                        debian => 'sarge',
                        redhat => '3.9',
+                       solaris => '10', # v5.8.4; 2005-01 eol 2021-01
                },
                unicode => '3.2.0',
        },
@@ -66,6 +75,9 @@ use utf8;
                ],
                release => '2010-04-12',
                unicode => '5.2',
+               distro => {
+                       solaris => '11', # also v5.8.4; 2010-11 eol 2024-11
+               },
        },
 
        v5.14 => {