Типы данных Perl

Perl — слабо типизированный язык, поэтому переменным не нужно указывать тип. Интерпретатор Perl автоматически выбирает подходящий тип на основе контекста.

В Perl есть три основных типа данных: скаляры, массивы и хэши. Ниже приведено описание этих трёх типов данных:

Number Тип и описание
1 Скаляр

Скаляр — простейший тип данных в Perl. Переменные этого типа данных могут быть числами, строками или числами с плавающей запятой, без строгого разграничения. При использовании добавьте$перед именем переменной, чтобы указать, что это скаляр. Например:

$myfirst=123;     #数字123 

$mysecond="123";   #字符串123 
2 Массив

Переменные массива используют символ@в начале, индексы начинаются с 0, например:@arr=(1,2,3)

@arr=(1,2,3)
3 Хэш

Хэш — это неупорядоченная коллекция парключ/значение. Вы можете использовать ключи в качестве индексов для получения значений. Переменные хэша используют символ%в начале.

%h=('a'=>1,'b'=>2); 

Числовые литералы

1. Целые числа

Perl фактически хранит целые числа в регистрах с плавающей запятой вашего компьютера, поэтому с ними на самом деле обращаются как с числами с плавающей запятой.

На большинстве компьютеров регистры с плавающей запятой могут хранить около 16 цифр; всё, что длиннее, отбрасывается. Целые числа на самом деле являются особым случаем чисел с плавающей запятой.

Целочисленные переменные и операции:

$x = 12345;
if (1217 + 116 == 1333) {
    # 执行代码语句块
}

Восьмеричные и шестнадцатеричные числа: восьмеричные числа начинаются с 0, шестнадцатеричные — с 0x. Например:

$var1 = 047;    # 等于十进制的39
$var2 = 0x1f;   # 等于十进制的31

2. Числа с плавающей запятой

Данные с плавающей запятой, например: 11.4, -0.3, .3, 3., 54.1e+02, 5.41e03.

Регистры с плавающей запятой обычно не могут точно хранить числа с плавающей запятой, что приводит к ошибкам. Следует обращать особое внимание при выполнении операций и сравнений. Диапазон экспоненты обычно составляет от -309 до +308.

Пример

#!/usr/bin/perl $value = 9.01e+21 + 0.01 - 9.01e+21; print ("Первое значение:", $value, "\n"); $value = 9.01e+21 - 9.01e+21 + 0.01; print ("Второе значение:", $value, "\n");

После выполнения вышеприведённой программы вывод:

第一个值为:0
第二个值为:0.01

3. Строки

Строки в Perl представляются с помощью скаляра. Способ их определения очень похож на C, но в Perl строки не завершаются \0.

Разница между двойными и одинарными кавычками в Perl: двойные кавычки могут должным образом интерпретировать некоторые escape-последовательности и переменные, а одинарные не могут их интерпретировать и выводят их как есть.

Однако использование одинарных кавычек позволяет создавать многострочный текст, как показано ниже:

#!/usr/bin/perl 

$var='这是一个使用

多行字符串文本

的例子';

print($var);

После выполнения вышеприведённой программы вывод:

This is an example of using

multi-line string text

Некоторые распространённые escape-последовательности в Perl показаны в таблице ниже:

Управляющий символ Значение
\\ Обратная косая черта
\' Одинарная кавычка
\" Двойная кавычка
\a Системный звонок
\b Возврат на один символ
\f Подача страницы
\n Перевод строки
\r Возврат каретки
\t Горизонтальная табуляция
\v Вертикальная табуляция
\0nn Создаёт число в восьмеричном формате
\xnn Создаёт число в шестнадцатеричном формате
\cX Управляющий символ; x может быть любым символом
\u Приводит следующий символ к верхнему регистру
\l Приводит следующий символ к нижнему регистру
\U Приводит все символы к верхнему регистру
\L Приводит все символы к нижнему регистру
\Q Добавляет обратную косую черту к несловным символам до \E
\E Завершает \L, \U, \Q

Пример

Далее давайте подробно рассмотрим использование одинарных и двойных кавычек и экранирующих символов:

Пример

#!/usr/bin/perl # Перевод строки \n внутри двойных кавычек работает $str = "Example\nwww.example.com"; print "$str\n"; # Перевод строки \n внутри одинарных кавычек не работает $str = 'Example \nwww.example.com'; print "$str\n"; # Только R будет преобразована в верхний регистр $str = "\uexample"; print "$str\n"; # Все буквы будут преобразованы в верхний регистр $str = "\Uexample"; print "$str\n"; # Указанные части будут преобразованы в верхний регистр $str = "Welcome to \Uexample\E.com!"; print "$str\n"; # Добавляет обратную косую черту к несловесным символам до \E $str = "\QWelcome to example's family"; print "$str\n";

Вывод приведенного выше примера:

Другие расширения