Source of perl.inc.pl

use utf8;
use strict;

my $wbr = "\N{ZERO WIDTH SPACE}";
+{
	v5.004 => {
		release => '1997-05-15',
		distro => {
			debian => '2.0', # hamm 1998-07 to potato 2000-08 eol 2003-06
		},
		unstable => 0,
	},

	v5.005 => {
		new => [
			['<code>lock</code>', 'obsolete <code>Thread</code> implementation, including a keyword to place advisory locks on shared variables', {experimental => 0, stable => 0, dropped => v5.10}],
			['<code>B::…</code>', 'backend hooks'],
			['<code>qr//</code>' => 'overhauled regular expression engine: precompile operator, lookahead/behind, code, conditions, localised flags'],
			['<code>… foreach</code>' => '<code>for(each)</code> as statement modifier, with large ranges optimised as counting loops'],
			['<code>…::</code>' => 'implicitly quoted package name'],
			['<code>ref $@</code>' => '<code>die</code> passes reference values to exception handlers'],
			['<code>INIT {}</code>', 'subs run just before the perl runtime begins execution'],
			['<code>tie @…</code>' => 'base class for <code>TIEARRAY</code> implementations, and generally improved supported of tied handlers'],
			['<code>substr …,…,…,$replace</code>', 'replacement string in 4th argument'],
			['<code>splice …,…,-$length</code>', 'negative length indicates elements to keep at the end of an array'],
			['<code>$/</code>', 'integer or scalar separator makes <code>&lt;&gt;</code> read records instead of lines'],
		],
		modules => [
			['Data::Dumper' => 'stringify data structures'],
			['Errno' => 'system <code>errno.h</code> constants'],
			['File::Spec'],
			['Fatal'],
			['Test'],
		],
		release => '1998-07-22',
		unstable => 0,
	},

	v5.6 => {
		new => [
			['<code>use warnings</code>', 'pragma to enable warnings in lexical scope', {name => 'warnings'}],
			['<code>use utf8</code>', 'experimental unicode semantics <small>(completed in <a href="#utf8_data">v5.8</a>)</small>', {name => 'utf8', experimental => 0, stable => v5.8}],
			['<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', {name => 'sub_lvalue', experimental => 0, stable => v5.20}],
#			['<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)', {experimental => 0, stable => v5.8.1}],
			['<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