1.标量解释:
Perl一般用标量(scalar)来称呼单个事务。
标量PERL里最简单的一种数据类型。
1.1.数字
所有数字的内部格式都相同。在PERL内部,则总是按"双精度浮点数(Double-precision floating-point)"的要求来保存数字进行运算。也就说PERL内部不存在整数值-----程序中用到整型常量会被转换成等效的浮点数值。
1.2.浮点直接量
直接量(literal)是指某个数字在PERL源代码中的写法。直接量并非运算结果,也不是I/O的操作,它只是直接保存在代码中的数据。
1.25
255.00
-65E24
1.3.整数直接量
0
2001
-40
1.4.非十进制的整数直接量
八进制(octal)直接量以0开头
十六进制(hexadecimal)直接量以0x开头
二进制(BINARY)直接量以0b开头
0377 #octal
0xff #hexadecimal
0b11111111 #binary
2.数字操作符
perl提供了各种数字运算符:
减法(-)
加法(+)
乘法(*)
除法(/)
取余(%)
....
3.字符串
字符串就是一个字符串,比如HELLO。
字符可以是任何字符任意长度的组合而成。最短的字符串可以不包含不任何字符,所以也叫空字符串,
最长的字符串是没有长度限制,它甚至可以填满内存。
hello
i love you
4.单引号内的字符串直接量
单引号内的字符串量(single-quoted string literal)指的是一对单号('')圈起的一串字符。
单引号直量不支持变量内插,例:'$var'; #输出的结果是$var
'fred'
'barney'
'hello\n'; #输出结果是hello\n
5.双引号内的字符串直接量
双引号内的字符串直接量同样也是字符串序列,只不过是换成的双引号("")表示首尾。
"hello"
"I love you"
5.1.双引号内字符串的反斜线转义
\n 换行
\r 回车
\t 水平制表
\f 换页符
\b 退格
\a 系统响铃声
\e ESC(ASCII编码转义)
\007 octal表示的ASCII值
\x7f hexadicimal表示的ASCII值
\cC 控制符,也就是Control键的代码点(CTRL+C)
\\ 反斜线转义
\ 双引号
\l 将下个字母换成小写
\L 将它后面所有的字母都转换成小写,直到遇到\E为止
\u 将下字母转换成大写
\U 将它后面所有的字母都转换成大写,直到遇到\E为止
6.字符串操符
连接操作字符(.)是将两个分开的字符连接起来
"hello" . "world"; # 等同于"helloworld"
"hello".' '."world" # 等同于"hello world";
重复操作符(x)
"fred" x 3 #result is fredfredfred
"test" x (4+1); #result is "testtesttesttesttest";
7.数字与字符串之间的自动转换
perl是怎样进行数字与字符串之间的转换自动转换?
这完全取决于操作符。如果操作符(+)需要的是数字,PERL就会视为数字;
在操作符(比如.)需要字符串时,PERL便会将操作符视为字符串。
对数字进行运算的作符(比如乘法) 如果遇到字符串类型的操作数,PERL会自动将字符串转换成等效的
十进制浮点数进行运算。因此"12"*"3"的结果会是36. 字符串中非数字部分(以及前置的空白符号)会被
略过,所以"12fred34" * "3"也会得出36;
-1---------------------------------------------------------------------------------------------------------
标量变量:
所谓变量(VARIABLE)就是存储一个或多个值的容器名称。
而标量变量,就是单单存储一个值的变量。
标量变量名称以美元符号开头,这个符号也称为魔符(sigil),
Perl标识符:由一个字母或下划线开头,后接多个字母,数字或下划线。
标识符区分大小写的:$fred and $FRED是两个不同的变量。
$test;
$TEST;
$Test;
Perl通过标识符来判断该变量的意图。$的确切意思是"取单个东西"或者"取标量"
标量的赋值:
是指将某个值存储到变量中。
Perl赋值符号为等号(=).
$fred = 17;
$test = 'hello';
双目赋值操作符:
$fred = $fred +5;
$fred +=5; #使用双目操作符
$barney = $barney * 3;
$barney *=3; #使用双目操作符
print输出结果:
print操作符就是用来输出信息:它可以接受标量值作为参数,然后不经修饰地将它输出到标准输出(standard output).
-1---------------------------------------------------------------------------------------------------------
-2--------------------------------------------------------------------------------------------------------
操作符优先级与结合性
结合性 操作符
左 括号;给定参数的列表的操作符
-----------------------------------------------
左 ->
++ --(自增,自减)
-----------------------------------------------
右 **
-----------------------------------------------
右 \ ! ~ + -(单目操作符)
-----------------------------------------------
左 =~ !~
-----------------------------------------------
左 * / % x
-----------------------------------------------
左 + - .(双目操作符)
-----------------------------------------------
左 "<< ,>>" #引号是没有的,这里是我刻意加的
具名的单目操作符(-X文件测试;rand)
< <= > >= lt le gt ge("不相等"操作符)
== != <=> eq ne cmp("不相等"操作符)
-----------------------------------------------
左 &
-----------------------------------------------
左 | ^
-----------------------------------------------
左 &&
-----------------------------------------------
左 ||
.. ....
-----------------------------------------------
右 ?:(三目操作符)
-----------------------------------------------
右 = += -= .=
-----------------------------------------------
左 , =>
列表操作符(向右结合)
-----------------------------------------------
右 not
-----------------------------------------------
左 and
-----------------------------------------------
左 or xor
-----------------------------------------------
-2--------------------------------------------------------------------------------------------------------
-3--------------------------------------------------------------------------------------------------------
比较操作符:
数值与字符串的比较操作符
比较符 数字 字符串
--------------------------------------------------------
相等 == eq
--------------------------------------------------------
不等 != ne
--------------------------------------------------------
小于 < lt
--------------------------------------------------------
大于 > gt
--------------------------------------------------------
小于等于 <= le
--------------------------------------------------------
大于等于 >= ge
--------------------------------------------------------
-3--------------------------------------------------------------------------------------------------------
-4--------------------------------------------------------------------------------------------------------
获取用户输入:
最简单的方法就是使用"行输入"操作符<STDIN>.
只需要把<STDIN>放在程序中希望返回标量值的位置上。Perl就会从标准输入(standard inout)读取一行文本(直到
换行为止)。
$test = <STDIN>;
if($test eq "\n")
{
print "That was just a blank line!\n";
}
else
{
print "That line of input was: $test\n";
}
-4--------------------------------------------------------------------------------------------------------
-5--------------------------------------------------------------------------------------------------------
chomp操作符:
chomp作用:只能作用于单个变量,且该变量的内容必须为字符串,如果该字符串末尾是换行,chomp()的任务就是
把它去掉。
$test= "a line fo test\n";
chomp($test); #去除末尾的换行符。
-5--------------------------------------------------------------------------------------------------------
-6--------------------------------------------------------------------------------------------------------
undef值:
在首次赋值前,变量的初始值就是特殊的undef(未定义)值,它在perl里的意思仅仅是:这里空无一物---走开,走开。
如果你把这个"空无一物"当成数字使用,它就会表现得零;
如果你把它当成字符串使用,它就会表现得像空字符串.
undef既不是字符串也不是数字,它是另一种类型的标量值。
#累加计数
$n=1;
while($n < 10)
{
$sum +=$n;
$n +=2;
}
print "Total was $sum.\n";
-6--------------------------------------------------------------------------------------------------------
-7--------------------------------------------------------------------------------------------------------
defined函数:
行输入操作符<STDIN>有时会返回undef。在一般情况下,它会返回一行文本。但若没有更多输入,比如读到文件结尾
(end_of_file)时,它就会返回undef来表示这个状况.
如果要想判断某个字符串是否是undef而不是空字符串,就可以使用defined;
如果是undef,该函数会返回假,否则为真。
$test =<STDIN>;
if(defined($test))
{
print "The input was $test\n";
}
else
{
print "No input avaible\n";
}
-7--------------------------------------------------------------------------------------------------------
perl-标量数据
最新推荐文章于 2022-11-28 17:58:30 发布