Per语言入门第4版学习笔记-第二章标量数据

第二章标量数据
2.1数字
2.2 字符串
2.3 Perl内嵌的警告
2.4 标量变量
2.5 print输出
2.6 if控制结构
2.7 用户输入
2.8 chomp 操作
2.9 while控制结构
2.10 undef 值
2.11 defined 函数[@more@]

第二章标量数据
Perl 也有数据类型—标量。标量是Perl 中最简单的数据类型。大多数的标量是数字(如255 或3.25e20)或者字符串(如hello◆或者盖茨堡地址)。
Perl 几乎以相同的观点来看待它们。

2.1数字
2.1.1 所有数字内部格式是一致的
对Perl来说,所有整数和浮点数都被当作双精度浮点数来处理。

2.1.2 浮点数
1.25 255.000 255.0
7.25e45 #7.25x10 的45 次方(一个大整数) -6.5e24 # -6.5x10 的24 次方(一个大的负数)
-12e-24 #- -12x10 的-24 次方(很小的负数) -1.2E-23 #指数符号可以大写(E)

2.1.3 整数
perl允许你用 _ 来分开数字 61298040283768 可以写成 61_298_040_283_768

2.1.4 非十进制整数
八进制以0开头
十六进制以0x开头
二进制 0b 开头

oct() 可以将像二进制和八进制的字符串 转换成 数字
hex() 可以将像十六进制的字符串 转换成 数字

2.1.5 数字操作符
+ - * / % **
其中 % 的2个操作数如果是浮点数的话,会先变成他们对应的整数。

2.2 字符串
perl中的字符串没有任何限制

2.2.1 单引号字符串
只有单引号和反斜杠是特殊字符
如果要表示单引号,就要用 ' 如果要表示反斜杠,就要用

2.2.1 双引号字符串
这时候 反斜杠 就会变成转移字符 例如 n 表示输出新行 t 表示输出tab
双引号字符串中的转义符
符号含义
n 换行
r 回车
t 制表符
f formfeed
b 退格
a 响铃
e escape(ASCII 中的escape 字符)
07 任何八进制值(这里是,007=bell(响铃))
x7f 任何十六进制值(这里是,007=bell)
cC 一个控制符(这里是,ctrl +c)
反斜线
” 双引号
l 下个字符小写
L 接着的字符均小写直到E
u 下个字符大写
U 接着的字符均大写直到E
Q 在non-word 字符前加上,直到E
E 结束L,E 和Q

双引号字符串另一个性质是可进行变量内插,这是说当使用字符串时,如果字符串中含有变量名,将由变量的当前值替换它。

2.2.3 字符串操作符
字符串可由 . 操作符连接
字符串重复操作符 x
"frd" x 3 结果是 frdfrdfrd
重复次数如果是浮点数 会转换成 小于等于它的整数
重复次数小于0 ,会产生空串.

2.2.4 数字和字符串之间的自动转换
perl会自动在数字和字符串之间转换
当在需要数字的地方使用了字符串(如,乘法),Perl 将自动把字符串转换为其等价的数字,如“12fred34”* “3”将给出36 而不会用任何提示。当一个不含任何数字的字符串将别转换为0。如,将“fred”当作数字来使用时。

2.3 Perl内嵌的警告
运行程序的时候,可以把警告打开
perl -w my_program
也可以在文件中加入
#! /usr/bin/perl -w

在 perl5.6 以后的版本中,可以这么写
use warnings;
使用 诊断(diagnostics) 可以看到更详细的信息
use diagnostics;

2.4 标量变量
标量变量可以存放一个标量值
标量变量的名字 由 $开头 由数字,字母和下划线 组成 ,但是不能由数字开头.

2.4.1 选择好的变量名

2.4.2 标量赋值
$barney = $fred + 3;# 将$fred 的值加上三赋给$barney (20)
$barney= $barney*2;#将变量$barney 乘2 再赋给$barney (40)

2.4.3 二元赋值操作符
$barney = $barney*3; 等价 $barney*=3;
$str = str . “”; #$str 后接空格 等价 $str .= “”’; #同上

2.5 print输出
可以将一串值赋给print,利用逗号分开:
print “The answer is ”,6*7, “.n”;

2.5.1 字符串中标量变量的内插
在字符串中变量前($符号前)加上反斜线(),变量将不会被内插(替换)
Perl 提供了一种类似 于shell 的分隔符:花括号({})。

2.5.2 操作符优先级和结合性

2.5.3 比较运算符
对于数字的比较,Perl 提供了< <= == >= !=
对于字符串比较,Perl 有如下的一些有趣的字符串比较符:lt le eq ge gt ne

2.6 if控制结构
2.6.1 Boolean值
if else
* 对于数字 0是false ,其它为true
* 对于字符串 空串为false,其它为true
* 如果既不是数字也不是字符串 则转换为数字或者字符串之后再利用上面的规则
但是有个特殊的,就是字符串 '0' 是 false,因为它等同于数字 0

2.7 用户输入
Perl程序从键盘上得到输入,有个简单的方法:使用行输入操作符(line-input operator),
如果想更多的控制输入,可以使用Term::ReadLine 这个模块,在CPAN 中可以下载到。
$line = ;
if($line eq “n”){
print “That was just a blank line!n”;
}else{
print “That line of input was: $line”;
}

2.8 chomp 操作
chomp 函数 如果字符串结尾有换行符,chomp可以去掉它。
使用chomp 的最常用方法是:
chomp ($text = ); #读入,但不含换行符
chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。
$food = ;
$betty = chomp $food; #得到值1
如上,在使用chomp 时,可以使用或不使用括号()。这又是Perl 中的一条通用规则:除非移除它们时含义会变,否则括
号是可以省略的。
如果结尾有两个或两个以上的换行符,chomp 仅去掉一个。如果没有,那什么也不做,返回0。

2.9 while控制结构

2.10 undef 值

2.11 defined 函数
要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。

2.12 练习
1.
#!/usr/bin/perl
$a=12.5 * 2 * 3.141592654;
print $a;

2.
#!/usr/bin/perl
$b=;
$a=$b * 2 * 3.141592654;
print $a;
~
3.
#!/usr/bin/perl
$b=;
if ( $b < 0 ) {
$a=0;
}else{
$a=$b * 2 * 3.141592654;
}
print $a;
~
4.
#!/usr/bin/perl
print "Please input number 1: ";
$a=;
print "Please input number 2: ";
$b=;
print "The result is ",$a*$b,"n";

5.
#!/usr/bin/perl
print "Please input string : ";
$a=;
print "Please input line num: ";
$b=;
print $a x $b ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133835/viewspace-1024876/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/133835/viewspace-1024876/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值