Скаляр — это единица данных. Этими данными могут быть целое число, число с плавающей точкой, символ, строка, абзац или вся веб-страница.
Вот простой пример использования скалярных переменных —
#!/usr/bin/perl $age = 25; # An integer assignment $name = "John Paul"; # A string $salary = 1445.50; # A floating point print "Age = $age\n"; print "Name = $name\n"; print "Salary = $salary\n";
Это даст следующий результат —
Age = 25 Name = John Paul Salary = 1445.5
Числовые скаляры
Скаляр чаще всего представляет собой число или строку. Следующий пример демонстрирует использование различных типов числовых скаляров —
#!/usr/bin/perl $integer = 200; $negative = -300; $floating = 200.340; $bigfloat = -1.2E-23; # 377 octal, same as 255 decimal $octal = 0377; # FF hex, also 255 decimal $hexa = 0xff; print "integer = $integer\n"; print "negative = $negative\n"; print "floating = $floating\n"; print "bigfloat = $bigfloat\n"; print "octal = $octal\n"; print "hexa = $hexa\n";
Это даст следующий результат —
integer = 200 negative = -300 floating = 200.34 bigfloat = -1.2e-23 octal = 255 hexa = 255
Струнные скаляры
Следующий пример демонстрирует использование различных типов строковых скаляров. Обратите внимание на разницу между одиночными и двойными кавычками —
#!/usr/bin/perl $var = "This is string scalar!"; $quote = 'I m inside single quote - $var'; $double = "This is inside single quote - $var"; $escape = "This example of escape -\tHello, World!"; print "var = $var\n"; print "quote = $quote\n"; print "double = $double\n"; print "escape = $escape\n";
Это даст следующий результат —
var = This is string scalar! quote = I m inside single quote - $var double = This is inside single quote - This is string scalar! escape = This example of escape - Hello, World
Скалярные операции
Подробно о различных операторах, доступных в Perl, вы увидите в отдельной главе, но здесь мы собираемся перечислить несколько числовых и строковых операций.
#!/usr/bin/perl $str = "hello" . "world"; # Concatenates strings. $num = 5 + 10; # adds two numbers. $mul = 4 * 5; # multiplies two numbers. $mix = $str . $num; # concatenates string and number. print "str = $str\n"; print "num = $num\n"; print "mul = $mul\n"; print "mix = $mix\n";
Это даст следующий результат —
str = helloworld num = 15 mul = 20 mix = helloworld15
Многострочные строки
Если вы хотите ввести в свои программы многострочные строки, вы можете использовать стандартные одинарные кавычки, как показано ниже:
#!/usr/bin/perl $string = 'This is a multiline string'; print "$string\n";
Это даст следующий результат —
This is a multiline string
Вы можете также использовать синтаксис документа «здесь» для хранения или печати мультилиней, как показано ниже:
#!/usr/bin/perl print <<EOF; This is a multiline string EOF
Это также даст тот же результат —
This is a multiline string
V-образные Струны
Литерал вида v1.20.300.4000 анализируется как строка, состоящая из символов с указанными порядковыми номерами. Эта форма известна как v-строки.
V-строка обеспечивает альтернативный и более читаемый способ построения строк, вместо использования менее читаемой интерполяционной формы «\ x {1} \ x {14} \ x {12c} \ x {fa0}».
Это любой литерал, который начинается с av и сопровождается одним или несколькими элементами, разделенными точками. Например —
#!/usr/bin/perl $smile = v9786; $foo = v102.111.111; $martin = v77.97.114.116.105.110; print "smile = $smile\n"; print "foo = $foo\n"; print "martin = $martin\n";
Это также даст тот же результат —
smile = ☺ foo = foo martin = Martin Wide character in print at main.pl line 7.
Специальные литералы
Пока что вы должны иметь представление о скалярных скалярах и их объединении и интерполяции. Итак, позвольте мне рассказать вам о трех специальных литералах __FILE__, __LINE__ и __PACKAGE__, представляющих текущее имя файла, номер строки и имя пакета в этой точке вашей программы.
Они могут использоваться только как отдельные токены и не будут интерполироваться в строки. Проверьте приведенный ниже пример —
#!/usr/bin/perl print "File name ". __FILE__ . "\n"; print "Line Number " . __LINE__ ."\n"; print "Package " . __PACKAGE__ ."\n"; # they can not be interpolated print "__FILE__ __LINE__ __PACKAGE__\n";
Это даст следующий результат —