perl用标量称呼单个事物,存放在标量变量中
数字
perl内部总是用双精度浮点数保存数字和运算
允许在数字中插入下划线,如321=3_21
八进制数以0开头,16进制数以0x开头,二进制数以0b开头,并且可以用_隔开
2**3表示2的3次方
字符串
字符串可以包含任何字符,所以可以用于创建、扫描和操控二进制数据,比如用于存放图形文件或可执行文件
要在源代码中使用Unicode书写直接量的话,要手工加上utf8编译指令(use utf8;无特殊原因建议都加)
除了单引号和反斜线字符外,单引号内所有字符都代表它们自己:
'hello
there' #hello、换行符、there(11个字符)
'\'\\' #'和\两个字符
双引号内的字符直接量
反斜线具有转义的作用:
\n 换行
\r 回车
\t 水平制表符
\f 换页符
\b 退格
\a 系统响铃
字符串的变量名称替换成该变量的当前值
字符串操作符
两个字符串用.连起来形成更长的字符串:"hello".' '.'world'."\n"='hello world\n'
小写字母x为重复操作符:"clc"x3="clc"x(2+1)="clc"x3.8="clcclcclc"
数字与字符串之间的自动转换
自动完成,数字还是字符串取决于操作符,如+为数字,.为字符串("5"."7"="57")
判定为数字时忽略非数字部分,且字符串只会转换为10进制数:"12"*"3"="12abc34"*"3"="012"*"03"
警告
开启:use warnings;或者#! /usr/bin/perl -w
不会修改程序的行为,只是给程序员看的
查看更详细信息:use diagnostics;
标量变量
以$开头,所以无论取什么名字都不会和perl自带的函数或操作符冲突
赋值:
$a=10;
$b=$a*2;
$b+=10;
$str.="";
打印:
print "fred ate $n ${what}s"; #{}是为了区分变量名和后面普通的字符
借助代码点创建字符
chr()把代码点转换成字符:$alef=chr(0x05D0);
ord()把字符转换成代码点:$code_point=ord('?');
直接用代码点\x{}:“x\{03B1}”
比较
lt,le,gt,ge,eq,ne
if和while控制语句
一定要加表示边界的花括号
如果是数字,则0为假,其余为真;字符串则空字符串('')和'0'为假,其余为真;既不是数字也不是字符串则转换为数字或字符串再判断
if($name gt 'fred'){...}
while($count<10)
{$count+=2;...}
!表示取反
读取用户输入
<STDIN>
$line=<STDIN>;
chomp()
去除单个字符串变量末尾的换行符
chomp($test=<STDIN>);
undef值
变量未赋值时的值,表现的像0和''
所以perl中变量未被赋值却被使用不会发生问题
defined函数用于判断变量是否为undef,如果不是返回真,如果是返回假:
$test=<STDIN>;
if(defined($test)){...}
else {...}