1、标量:数字
※浮点数(小数)、整数
※非十进制的整数
十六进制
八进制
二进制
※数字操作符:
+ - * / % **
例子:浮点数
$a = 1.25;
$b = 255.0;
$c = $a + $b;
print $c;
print "\n";
$a = 7.25e45;
print $a;
print "\n";
$b = -6.5e24;
print $b;
print "\n";
$c = -12e-24;
print $c;
#e大小写都可以
#但是perl区分大小写
结果:
例子:整数
$x = 2001;
$y = -40;
$z =$x -$y;
print "\n";
print $z;
$a = 255;
$b = 61298042326737383;#但是这样看不清是多少数,要分割
print "\n";
print $a;
print $b;
#perl里面逗号有特殊的作用
#$c = 61,298,040,283;这样不可以
#改成
$c = 61_298_040_283;
例子:非十进制
$a = 0377; #八进制
$b = 0x56; #16进制
print "\n" . $a;
print "\n" . $b; # .表示把前面和后面连在一起
$c = 0b10100001; #2进制
print "\n" . $c;
$a = 037;
print "\n" . $a;
$b = 0x56_65_72_7C;
print "\n" . $b;
结果:
例子:数字操作符
$r = 2 + 3;
print "\n" . $r;
$r = 5.1 - 2.4;
print "\n" . $r;
$r = 3 * 12;
print "\n" . $r;
$r = 14 / 2;
print "\n" . $r;
$r = 10.2 / 0.3;
print "\n" . $r;
$r = 10 / 3;
print "\n" . $r;
$r = 11 % 3; #取模,取余数
print "\n" . $r;
$r = 10.5 % 3.2; #这个要先化成整数,在做取模
print "\n" . $r;
$r = 3 ** 2; #乘方运算,3的2次方
print "\n" . $r;
$r = 2 ** 10;
print "\n" . $r;
结果:
2、标量:字符串
※单引号字符串
※双引号字符串
\n \r
\ t \b
\ a \f
※字符串操作符(2个)
.
x
※字符串中的变量内插(变量替换)–双引号内插
例子:
$a = "hello";
$b = 'hello';
print $a;
print "\n";
print $b;
print "hello perl";
print "\n";
print 'hello perl';
双引号和单引号的区别:
首先,新建文件夹和文本文档
print 'D:\bag\truck\apple.txt';
print "\n";
print "D:\bag\truck\apple.txt";
结果:
原因:
双引号字符串中
\n \r \ t \b \ a \f
这些是转义字符,有特殊含义
\b :回退三个符号
\t:tab键,制表符,空格
\a:电脑响一下
\n:换行
如果双引号里面想要保留/,要多写一个/
print "D:\\bag\\truck\\apple.txt";
字符串中,第一个'表示开始,第二个'表示结束
print 'Don't do it';
在这里,'Don'已经是完整的字符串了,后面的字符是打印不出来的
正确做法: \'
print 'Don\'t do it';
单引号里有双引号:
print 'I say "you and me"';
双引号里有单引号:
print "Don't do it!";
单引号里的\n不表示换行,换行要双引号里的\n。
print 'hello\n';
print 'hello\n';
print 'hello\n';
print "hello\n";
print "hello\n";
print "hello\n";
print "\n";
字符串操作符
. 表示把字符串连接起来
$m = 10;
print "hello" . $m . "perl";
print "\n";
$score = 98;
print "你的考试分数是" . $score . "分";
x 表示把多少个字符串连在一起,不是乘法。
print "hello" x 10
print 5 x 10;
print "barney" x (4+1) . "\n";
字符串中的变量内插(变量替换)–双引号内插
内插:变量的值插入字符串中
不能用单引号来进行内插
$score = 98;
print "你的考试分数是 $score 分";
$what = "brontosqurus steak";
$n = 3;
print "fred ate $n ${what}s.\n";
#如果不加括号,print "fred ate $n $whats.\n"打印不出来$what的内容
print "fred ate $n $whats.\n";
3、标量数据
※数字与字符串之间的自动转换
※标量变量
※双目赋值操作符
※用print输出结果
※比较操作符
== != < > <= >=
eq ne lt gt le ge
※if控制结构
字符串转换成数字
print "12" * "3";
print "\n";
print"12fred45" * "3";
print "\n";
print"fred" * "3";
print "\n";
print "hello" . 8;
#8变成字符串
print "hello" . 8*6;
#先做乘法,然后在转换成字符串
标量变量
$fred = 8+6;
$Fred = 6**2;
print "\n";
print "hello" . $fred;
print "\n";
print "hello" . $Fred;
print "\n";
$_hello = 99;
#9a = 11;无效变量
print $_hello;
双目赋值操作符
#双目赋值操作符
$fred = 5;
$fred =$fred + 5;
$fred +=5;
$barney = 17;
$barney *= 3;
print "\n" . $barney;
$str = "hello";
$str .= " ";
$str .= "Perl";
print "\n" . $str;
用print输出
print "\nThe answer is" . 6*7 . "\n";
print "\nThe answer is" , 6*7 , "\n"; #列表。三个标量用逗号隔开
if控制结构、比较操作符:
数字比较:
== != < > <= >=
$a = 5;
$b = 12;
if($a == $b){
print "相等\n";}
else{
print "不相等\n";}
if($a >= $b){
print "$a比$b小\n";
}
字符串比较:
eq ne lt gt le ge(与上面的符号一一对应)
$m = "张飞";
$n = "刘备";
if($m ne $n){
print "不相等\n";
}
if($m eq "林冲"){
print "$m是林冲\n";
}
else{
print "$m不是林冲\n";
}
if($m gt $n){
print "$m大于$n\n";
}
if($m lt $n){
print "$m小于$n\n";
}
4、标量数据
※获取用户输入
※chomp操作符
※while控制结构
※undef 值
※defined 函数
chomp操作符
$a = "hello\n\n\n";
$b = chomp($a);
# chomp把字符串最后的一个\n去掉,返回值是1。如果字符串里面没有\n,就什么也不做
print $a;
print $b;
读取用户输入:
print "输入你的姓名:";
chomp($name = <STDIN>);
#STDIN,表示标准输入,即键盘。<>行输入操作符
print "你的姓名是" . $name;
#输入名字后,会按回车键,这个回车键也包含在输入的内容里面。用chomp去掉这个回车
while循环语句:
$count = 0;
while($count <= 10){
print $count . "\n";
$count += 2;
}
undef 值 未定义
print "\n";
# $x = 1;
print $x +1; #$x未进行初始化,perl语言将其初始化为0;
print "\n";
# $s = "perl";
print "hello" . $s; #$s未进行初始化,perl语言将其初始化为0长度字符串(空字符串);
$k = 12;
print "\n";
$k = undef;
print $k; #打印出来什么都没有
$n = 1;
while ($n < 10){
$sum += $n;
$n++;
}
defined函数:检测是否为定义的
$madonna = <STDIN>;
if(defined($madonna)){
print "The input was $madonna";
}
else{
print "NO input avalible";
}