2020-04-02

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"

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 用户输入

$get_in=;

1.8.2 chomp操作符

去除最后面的\n,若无则不处理

#去除输入的回车,并赋给$get_in
#chomp返回值为0或1,所以一般将他视为
chomp($get_in=);

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=;
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=;
print "请输入数字:\n";
$num=;
print "they are :\n";
while($num){
  print $chars;
  $num--;
}

你可能感兴趣的:(2020-04-02)