Perl-小骆驼书~学习笔记
Perl的逻辑:丑则丑矣,效率高啊。吃苦能干,小骆驼也!
[TOC]
1.标量数据
标量scalar包含数字和字符串。
1.1 数字
数字内部格式为双精度浮点型。
直接量 literal:直接键入程序源代码中的数据。
浮点型直接量
-
整数型直接量
- 其他进制
- 十进制 255
- 十六进制 0xFF
- 八进制 0377
- 二进制 0b11111111
- 太长时可加入下划线
- 0x1377_0B77
- 61_298_121
- 其他进制
-
操作符
-
取模%:先取整再取余数。
取整:小于1为0,如4.8为4
-
取整:小于1为0
- 10%3=1
- 10.5%3.1=1
乘幂**
-
1.2 字符串
- ASCII字符范围以外的字符,需要
use utf8
-
Single-quoted string literal
:'就是表面看起来那样,顶多转义一个 \ ' ,其他的都是字符' -
double-quoted string literal
:"可以加入变量和转义\n啥的"
转义:
意义 | 组合 | 意义 | 组合 | 意义 | 组合 |
---|---|---|---|---|---|
换行 | \n | 回车 | \r | 制表符 | \t |
换页 | \f | 退格 | \b | 响铃 | \a |
ctrl+c | \cC | 反斜线 | \ \ |
- 操作符
- 点符
.
:"asd"."ee"
=="asdee"
- 重复
x
:"fe"x3
=="fefefe"
- :a:attention:
5x4.8
为"5555"
- :a:attention:
- 点符
1.3 字符串和数字的混用
Perl根据操作符来确定数字还是字符串
"123"+"456" #123+456=579
"123ef245"+"456" #123+456=579
"123"."456" #"123456"
1.4 标量变量
$开头,标识符的开头为_或字母,不能是数字开头。
$意味取"单个东西"或取"标量"
使用utf8之后,变量名也可为其他的非ASCII字符
$汉字="我爱中国";
-
赋值
a=a*=5;
* 变量内插
```perl
$handsome="handsome very much\n";
$xiu="we are $handsome";
#或则用.串联起来
$xiu='we are'.$handsome;
1.5 print
- 默认为STDOUT,即标准输出,输出到屏幕。
print "hello world\n";
print 6*7;
print "My","English is so",6,"!\n";
#变量的输出
print $handsome;
1.5.1 内插歧义的避免
在变量后面接上字符容易歧义
$a="123";
#变量后面接字母、数字、下划线
print "$as" #error
print "${a}s" #123s
#变量后面接方括号、花括号、冒号、引号等,可将他们加斜线
print "$a\[ss]" #123[ss]
print "${a}[ss]" #123[ss]
1.5.2 代码点code point和字符的转换
基于utf8,有很多字符超出ASCII字符表。
code point
记录字符的十六进制“ID”,请允许我这么叫。它和字符之间是一一对应的关系的。
- code point到字符:
chr(code point)
$omega=chr(0x03C9)
- 字符到code point:
ord('字符')
use utf8;
$顿号=ord('、');
- 直接用双引号:
\x{03B1}
#αω\n
print "\x{03B1}\x{03C9}\n";
1.6 操作符
操作符 | 结合性 | 注释 |
---|---|---|
++,--,** | 左 | 自增,自减,自乘 |
=~,! ~ | 左 |
- 比较操作符
意义 | 数字大小比较 | 字符串比较 |
---|---|---|
相等 | == | eq |
不等 | != | ne |
小于 | < | lt |
大于 | > | gt |
小于等于 | <= | le |
大于等于 | >= | ge |
1.7 if
控制结构和while循环结构
与其他语言类似,略
1.8
1.8.1 用户输入<STDIN>
$get_in=<STDIN>;
1.8.2 chomp操作符
去除最后面的\n,若无则不处理
#去除输入的回车,并赋给$get_in
#chomp返回值为0或1,所以一般将他视为
chomp($get_in=<STDIN>);
1.8.3 undef
当做数字时视为0,当做字符串时视为空字符串""
- 应用: 当一个变量未被定义就被使用,他就被定义为undef,使得程序得以继续运行(正常需要定义的这个变量的)。
- 也可自己创建
undef
:$a=undef
1.8.4 defined函数-判断字符串是否为空
- 返回逻辑值
if(defined($a)){
print "aaa\n";
}else{
print "hhha\n";
}
1.9 章后作业
- 1-3题
#!/usr/bin/perl -w
use utf8;
print "请输入半径:\n";
$banjing=<STDIN>;
if($banjing<0){
print "周长是:\n0\n";
}else{
$pai=3.141592654;
$zhouchang=$banjing*2*$pai;
print "周长是:\n$zhouchang\n";
}
- 4-5题
#!/usr/bin/perl -w
use utf8;
print "请输入字符串:\n";
$chars=<STDIN>;
print "请输入数字:\n";
$num=<STDIN>;
print "they are :\n";
while($num){
print $chars;
$num--;
}