Literal Values

[email protected] (Angel Faus)
Newsgroups perl.perl6.documentation
Organization vLex.com
Message-ID <[email protected]>
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>.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.