标量:是以$开头的单个数字或者字符串;区分大小写;由字母或下划线开头,后接多个字母,数字或下划线
三个不同变量
$name;
$NAME;
$Name;
$_12 = 5;
$a_very_long_name = "string";
print "$_12\n$a_very_long_name\n";
给标量取个好名字:标量名称应该能说明它的用途和意义
Perl变量命名最好全部小写,尽量不要全部的大写,易与表示特殊意义的变量冲突
数字型的标量
按“双精度浮点数”的要求来保存数字并进行运算
浮点数直接量:指某个数字在Perl源代码中的写法
1.25
255.000
255.0
7.25e45
-6.5e24
-12e-24
-1.2E-23
整数直接量
0
2001
-40
255
61298040283768
61_298_040_283_768
非十进制的整数直接量(前置零)
八进制(o);十六进制(0x);二进制(0b)
o377 #八进制的377 = 十进制255
0xff #十六进制的FF = 十进制255
0b1111111 #十进制255
非十进制直接量的长度超过4个字符时,读起来会有些困难;因此Perl同样容许在这些直接两种使用下划线分开读
0x1377_0B77
0x50_65_72_7C
前置零:只对直接量有效;不能用于字符串到数字的自动转换
可以使用oct()和hex()两个内置函数,把看起来像八进制或十六进制的直接量转换成数字;其中oct()可以接受以0b开头的字符串
字符串类型
最短的字符串不包含任何字符---空字符串;最长的字符串是没有限制的
字符串通常是由可输出的字母,数字及标点符号组成,其范围介于ASCII编码的32到126之间
因为字符串能够包含任何字符,所以可用它来创建、扫描或操控二进制数据,这个功能是其他语言工具所不能的
use utf8; #在源代码中使用Unicode书写直接量
补充:单引号中要表示反斜线字符本身,需要在这个反斜线字符前加一个反斜线字符表示转义
print 'hello\\world'; #hello\world
赋值
$number = 150; #数字赋值
$name = "Jody Savage"; #字符串赋值
$today = localtime(); #函数localTime输出内容以字符串形式赋值
花括号
如果一个标量位于花括号({})之间,其后面出现的字符串将不会追加到标量后面
$var = "net";
print "${var}work\n"; #network
赋值与输出
$num = 5;
$friend = "John Smith";
$money = 125.75;
$now = localtime();
$month = "Jan";
print "$num\n";
print "$friend\n";
print "I need \$$money.\n";
print qq/$friend gave me \$$money.\n/;
print qq/The time is $now\n/;
print "The month is ${month}uary.\n";
print "The month is $month"."uary.\n"; #(.)操作符将不同字符串链接到一起
defined函数:检查变量值的有效性
如果一个标量既不是有效的字符串,又不是有效的数字值的话,称其为未定义的
如果变量中含有值,返回值为1,否则为null
可用于检查数组,子例程和null字符串的有效性
$name = "Tommy";
print "ok\n" if defined $name; #ok
undef函数:解除已经定义的变量
释放那些分配给变量的内存空间;该函数返回未定义的值,并释放与数组或子例程相关联的内存空间
undef $name;
$_标量型变量
用作默认的模式空格符,并负责保有当前行号
一旦为其赋予了某个数值,如chomp、split和print之类的函数就会把新的$_值当做输入参数
$_ = "Donald Duck";
print; #Donald Duck
借助代码点创建字符
有时候我们需要输入键盘上没有的那些字符。取得这些字符的方法需要看用的是什么系统的输入法或是哪款文本编译器
与其费力寻找字型输入,不如直接键入这些字符的代码点(code point),再通过chr()函数转换成对应字符
$alef = chr(0x03C9);
$omega = chr(0x03C9);
$alpha = chr(hex('03B1'))
print $alef,"\n";
####通过ord()函数把字符串转换为代码点
$code_point = ord('? ');
print $code_point;
print "\x{2668}"; #Unicode中名为HOT SPRINGS的字符的代码点