标量数据

Perl用标量来称呼单个事物,这是Perl里最简单的一种数据类型

  • 数字
    在Perl中总是按照双精度浮点数来保存数字进行运算的。所以Perl内部不存在整数值。
  1. 浮点数直接量
    是指某个数字在Perl中直接的写法,如:1.25,7.25e45,-1.2e-23

  2. 整数直接量
    61298012 == 61_298_012

  1. 非十进制的整数直接量
    八进制0377,十六进制0xff,二进制0b1111111

  2. 数字操作符
    +-×/%,都是按照浮点数类型进行运算!!

  • 字符串
    Perl字符串能包含任何字符,可用来创建扫描操控二进制数据。可将一个可执行文件读入perl,修改后再写回去。
  1. 单引号内的字符串直接量

    'FRED','\'\\'
    
  2. 双引号内的字符串变量(反斜杠能转移更多控制字符)

    " barney" ,"hello,world\n" 
    
  3. 字符串操作符
    字符串可以用.操作符连接起来,连接后得到一个新的更长的字符串。

     "HELLO"." "."WORLD" == "HELLO WORLD"
    

字符串重复操作符:x
"FRED" x 3

此操作符将左边的操作数与它本身重复右边操作符次数

  • 数字和字符串之间的自动转换

Perl会根据需要,自动在数字和字符串之间进行类型转换操作。如果操作符(如+)需要数字,则转换为数字,若字符串不包含数字则转换为0。如果操作符(如.)需要字符串,则转换为字符串。

Perl的内置警告信息

我们可以通过编译指令开启警告功能

#!/usr/bin/perl
use warnings;

也可以在命令行上通过-w选项开启警告功能
** Perl -w my_program**
Perl发出的警告信息不会改变程序行为,如果想让警告信息更详细,可以加上

use diagnostics

或者

perl -Mdiagnostics ./my_program

标量变量

标量变量就是单单存储一个值的变量。标量变量的名称以$符号开头 。标识符是区分大小写的。

  • 标量的赋值(=)
  • 双目赋值操作符(+=)
  • 乘幂操作符(**=)

print输出

默认输出到标准输出。可以输入一系列用,隔开的值

字符串中的标量变量内插

$meal = "steak";
$barney = "fred ate $meal"

如果标量变量从未被赋值过,则会用空字符串来替换。

借助代码点创建字符

直接键入这些字符的代码点,然后通过chr()函数转换为对应的字符。反过来也可以通过ord()把字符转换为代码点。

$alef = chr(0x05D0);

若不想预先创建变量,也可以通过双引号内\x{}的形式创建。

"\x{03B1}\x{03C9}"

比较操作符

** == eq
!= ne
< lt
> gt
<= le
>= ge
**

Perl内的if控制结构和c一样(只是必须要加花括号)

布尔值

Perl没有专门的布尔类型变量

  • 如果是数字,0为假,其余为真
  • 如果是字符串,空字符串为假,其余为真
  • 如果既不是数字也不是字符串,就先进行转换

小技巧,连续两次!操作,可以得到表示布尔值的变量

$still_true = !!'0'

获取用户输入

"行输入"操作符
放在程序希望返回标量值的位置,Perl会从标准输入读取一行文本。这一过程是阻塞的,且由返回的字符串一般在末尾都会带有换行符

$line = ;
print $line;

chomp操作符

chomp()的任务就是去除一个字符串单个变量的末尾的换行符,如果字符串后面有两个以上的换行符,chomp只删除一个,如果结尾处没有换行符,就直接返回0。返回值是被移除的字符数。

while控制结构和c一样

undef值

在首次赋值之前,变量的初始值就是特殊的undef值,当数字用则是0,当字符串用则是空字符串。

defined函数

行操作符有时候会返回undef,例如读到文件结尾时的情况,要判断某个字符串是undef而不是空字符串,可以使用defined函数,若是undef,函数返回假

defined($test)

你可能感兴趣的:(标量数据)