I've written a frist version of the "1.1 - Literal Values" subsection (in Michael's schema).
It discusses the different ways of creating literal numbers and strings in perl6. There are no tests, and the format may be outdated. I will gladly resubmit this in a more complete form. I have directly stolen some paragraphs from perl5 documentation. Special prize to the one who lists all the original sources! This is just a tentative draft, so feel free to delete/add at your own taste. Does it look ok? Any comments? (including grammar errors, of course) -angel ------------------------------------------- =subsection Literal Values =head1 Literal numbers =head2 Integers Integers can be represented by its decimal representation, such as: my $x = 14; # stores the integer 14 in $x You can also write the number in any other base, using the C<radix:dddddddd> syntax. For example: my $x = 2:101110; #binary my $x = 3:1210112; #tertiary my $3 = 8:1270; #octal my $x = 16:1E3A7; #hexadecimal my $x = 256:255.255.255.0; #256-base As you can see, when the base is greater than 10, there is a need to represent digits that are greater than 9. You can do this in two ways: =over =item * Alphabetic characters: Following the standard convention, perl will interpret the A letter as the digit 10, the B letter as digit 11, and so on. =item * Separating by dots: You can also write each digit in its decimal representation, and separate digits using the C<.> character. =back For example, the integer 30 can be written in hexadecimal base in two equivalent ways: my $x = 16:1D my $x = 16:1.14 This two representations are incompatible, so writing something like C<16:D.13> will generate a compile-time error. Finally, you can create negative integers prepending the C<-> character. For example: my $x = 18; my $x = -18; =head2 Floating Point-Numbers You can use the decimal representation of the number and the standard exponental notation. my $x = -2.542; my $x = 7.823e12; Perl lets you operate integer numbers with floating-point numbers, so the following operation is correct: print 3.5 + 2; # prints 5.5 =head1 Literal strings Duble quotes or single quotes may be used around literal strings: print "Hello, world"; print 'Hello, world'; However, only double quotes "interpolate" variables and special characters such as newlines ("\n"): print "Hello, $name\n"; # works fine print 'Hello, $name\n'; # prints $name\n literally my $x = 'world'; print "Hello, $x"; # Hello, world You can type any character including newlines and tabs in literal strings: my $x = 'Look mum, I can type newlines and tabs too!'; If you use a Unicode editor to edit your program, Unicode characters may occur directly within the literal strings. Unicode characters can also be added to a doble-quoted string using the C<\x{...}> notation. The Unicode code for the desired character, in hexadecimal, should be placed in the braces. For instance, a smiley face is C<\x{263A}>. Perl provides escapes for easily inserting characters that have a codepoint below 256: print "\xB" # Hexadecimal - character number 16:xA print "\024" # Octal - character number 8:33 Aditionally, you can use the C<\N{...}> notation and put the official Unicode character name within the braces, such as C<\N{WHITE SMILING FACE}>. See the L<quotes> section for a full explanation of the interpolation mechanism and a list of special characters in doble-quoted strings. =head2 String as vector of ordinals Literals of the form C<v1.2.3.4> are parsed as a string composed of characters with the specified ordinals. This is an alternative, more readable way to construct (possibly unicode) strings instead of interpolating characters, as in C<\x{1}\x{2}\x{3}\x{4}>. The leading C<v> may be omitted if there are more than two ordinals, so C<1.2.3> is parsed the same as C<v1.2.3>.