Perl 数据类型:标量

本文详细介绍了Perl中的标量数据类型,包括数字(整数、浮点数)、字符串及其操作符,以及数字和字符串之间的自动转换。此外,还讲解了标量变量的使用,如复合赋值、打印输出、变量内插等,并探讨了控制结构中的if和while。文章还讨论了Perl中的逻辑值、用户输入和chomp操作符,以及undef值和defined函数的用法。
摘要由CSDN通过智能技术生成

Perl 数据类型:标量(scalar)

0. Perl 的优势和劣势:

  • Perl适合在几分钟内写出虽然难看但是却够用的一次性程序;
  • Perl擅长处理和文字有关的问题;
  • 不适合封闭式二进制可执行文件(opaque binary);
  • 标量分类
    • 标量数据:(常量) 固定数据,表示确定的数据内容;
    • 标量变量:(变量) 可变数据,表示数据的存储容器;

1. 标量数据:数字

Perl处理数字是用的是底层 C 库,并且使用统一的双精度浮点数来存储数据。实际程序中定义的整数在 Perl 内部而言,内部处理时都将其转换为双精度浮点数据来存储和计算。

1.1 整数(dec)

  • 直接量(literal),在源代码中直接写生成数据内容的形式。(不就是常量的定义么?)
  • 例:0, 2001, -40, 137,23746294269, 314_343_878
  • 过长的数字读起来比较吃力,因此允许在整数直接量中加入下划线,仅仅为了方便阅读;

1.2 整数(non-dec)

  • 二进制 :以 ‘0b’ 开头,0b1111_1111
  • 八进制 :以 ‘0’ 开头,0377
  • 十六进制:以 ‘0x’ 开头,0xFF,0xff

1.3 浮点数(float)

  • 正常写法:1.25,3.67,78.000
  • 科学计数法:-1.5E34,2.5e-12 (十进制中 e 表示以 10 为幂)
  • 十六进制浮点数:0x1f.0p3 (十六进制中 p 表示以 2 为幂)

1.4 数字操作符

character meaning
+ 2+3 = 5
- 4-2 = 2
* 2*4 = 8
/ 10.2 / 0.3 = 34
/ 10/3 = 3.333333 (perl内部都是双精度浮点数哦)
% 10%3 = 1
% 10.5%3.2 = 1 (取模运算:先取整,再求余)
** 2**3 = 8

2. 标量数据:字符串

  • 字符串不限制长短,字符串通常是由可以输出的字母,数字和标点组成,其范围介于ASCII编码的32~126之间;
  • Perl完全支持Unicode,但是使用之前必须声明 use utf8;(用于支持ASCII之外的其他字符)

2.1 单引号字符串

  • 前后两个 ( ’ ),只是表示字符串的边界,并不是字符串的内容,用于让 Perl 判断字符串的开头和结尾;
    • 例: ‘fed’, ‘barney’, ‘’, ’ ’ #3个字符,6个字符,空字符,空格字符
  • 单引号中,除( \\ )( \’ )外,其他的都代表字符本身,如<\n>表示字符 \n;
  • 单引号中没有转义字符,\\ 和\’ 是为了能够在单引号字符串中使用反斜线 \ 和单引号 ’ .

2.2 双引号字符串

  • 前后两个 ( " ),只是表示字符串的边界,并不是字符串的内容,用于让 Perl 判断字符串的开头和结尾;
    • 例:“hello”, “hello world\n”, “barney” # “barney” 和 ‘barney’ 是相同的;
  • 双引号内的转义字符:
Argument Meaning
\n 换行符
\r 回车符
\t 水平制表符
\f 换页符
\b 退格
\a 系统响铃
\e 跳出(ASCII编码的转义字符)
\007 八进制表示的ASCII值
\x7f 十六进制表示的ASCII值
\x{2744} 十六进制表示的Unicode代码点(这里代表❉)
\N{CHARACTER NAME} 任何一个Unicode代码点
\cC 控制符 Control 按键的代码,\cC代表用时按下Control+C
\\ 反斜线
\" 双引号
\l 将下个字母转换为小写
\L 将后面的字符都转为小写,直到 \E 为止
\u 将下个字母转为大写
\U 将后面的字符都转为大写,直到 \E 为止
\Q 将后面的字符非单词都加上反斜线,直到 \E 为止
\E 结束 \L, \U, \Q的作用范围

2.3 字符串操作符

Argument Meaning
. 拼接符“hello”.“world” -> “helloworld”
. 拼接符“hello”." ",“world” -> “hello world”
x 小写字母 x,“fred”x3 ->“fredfredfred”
x 5x4 -> "5"x4 -> “5555” (字符串操作,先转换为字符串)
x 5x4.8 -> 5x4 -> “5555” (先向下取整,再进行字符串重复操作)

3. 数字和字符串的转换

  • Perl 会自动转换数字和字符串数据,转换原则取决于操作符的意义,不用手动转换。
    • 数字操作符:转换为数字 -> 计算
    • 字符串操作符:转换为字符串 -> 处理
  • 例:
    • “12” * “3” ->36
    • “12fred67” * “3” -> 36 (非数字部分被忽略,如果加了-w,会报警告)
    • “fred” * “3” -> 0 (不包含数字的字符串被转换为零,如果加了-w,会报警告)
  • 非十进制的转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值