|Previous||Table of Contents||Next|
Perl has two different types of scalar constants called literals: numeric literals and string literals.
Numeric literals are numbers, and Perl accepts several different ways of writing numbers. All the examples shown in Table 2.1 are valid numeric literals in Perl.
Numbers are expressed as you think they would be. Integers are just groups of consecutive digits. Floating-point decimal numbers contain a decimal point in the correct position, even if there are no digits to the right of it. A floating-point number can be expressed in scientific notation as an exponent preceded by the letter e (or E) and a decimal number called the mantissa. The value of the scientific-notation literal is 10 raised to the power indicated by the exponent, multiplied by the mantissa; for example, 6.5536E4 = 65,536.0. (Strictly speaking, a mantissa is the decimal part of a logarithm, where it serves the same purpose as it does here.)
Do not use a leading zero in front of a number, such as 010. To Perl, a leading zero means that the literal represents an octal numberóbase 8. Perl also allows you to use literal hexadecimal numbersóbase 16ó and binary numbersóbase 2. More information on these is in the online documentation in the perldata section.
String literals in Perl are sequences of characters, such as Hello, World. They can contain as much data as you want; strings have no real limit on their size except the amount of virtual memory in your computer. Strings can also contain any kind of dataósimple ASCII text, ASCII with the high bits on, even binary data. Strings can even be empty.
In Perl you must enclose string literals, with very few exceptions, in quotation marks. This process is called quoting the string. The two primary ways of quoting strings are to use single quotation marks ('') or double quotation marks (""). The following are some sample string literals:
"foo!" 'Fourscore and seven years ago' "One fish,\nTwo fish,\nRed fish,\nBlue fish\n" "" "Frankly, my dear, I don't give a hoot.\n"
What if you need to put another quotation mark inside your string literal? For example, the following string literal would make no sense to Perl:
"Then I said to him, "Go ahead, make my day""
Here, the quotation mark in front of the word Go marks the end of the string literal started by the first quotation mark, leaving the phrase Go ahead, make my day outside the string literalóin which case it would have to be valid Perl code, which it isn't. To prevent this situation, you must use a backslash (\) in front of the quotation marks that are inside the string. A backslash inside of a string literal tells Perl that the character that follows should not be treated as Perl would normally treat itóin this case, it should be handled as a character in the string literal rather than as the marker for the end of the string literal. Put a backslash character in front of each quotation mark that you want Perl to treat simply as a character, as shown here:
"Then I said to him, \"Go ahead, make my day.\""
The backslashes let Perl know that the quotation mark that follows is not the match for the first quotation mark that started the string literal. This rule applies to single quotation marks as well as double quotation marks, as you can see here:
'The doctors\'s stethoscope was cold.'
The primary difference between double-quoting and single-quoting a string is that single-quoted strings are quite literal; every character in a single-quoted string (except the sequence \') means exactly what is there. In a double-quoted string, on the other hand, Perl checks to see whether variable names or escape sequences are present and translates them if they are. Escape sequences are special strings that allow you to embed characters in strings when just typing the characters would cause problems. Table 2.2 shows a short list of Perl's escape sequences.
By the Way
You can find the full list of escape sequences in the online manual. As I indicated in Hour 1, "Getting Started with Perl," you can find the entire Perl language documentation by using the perldoc utility included with the Perl distribution. The escape sequences are listed in the "perlop" manual page under the heading "Quote and Quote-like Operators."
"I said, \"Go then,\", and he said \"I'm gone.\"."
Perl provides another quoting mechanism: the qq and q operators. To use qq, you can surround the string literal with qq( ) instead of quotation marks:
qq(I said, "Go then," and he said "I'm gone")
qq replaces the double quotation marks; this mechanism behaves exactly like double quotes in almost all respects.
You can use the q operator to surround text instead of