使用内建警告信息
在运行时,加上 -w
¥perl -w my_program
#!/usr/bin/perl/ -w
#!/usr/bin/perl
use warinings
use diagnostics 如果要查看更详细的信息可以用这个
use strict 强制终止程序的执行直到程序问题被解决
1、会避免错误拼写
2、限定变量的范围
如何使用帮助文档perldoc
标量$
数字标量 全部为双精度浮点数
$data = 10;
$data = 10.00;是一样的,都会被转到双精度浮点
较长的,可以用下划线隔开(跟verilog一样)
非十进制
八进制 0开头
16 :0x 0xFF
2 :0b 0b111111
字符串标量
$data =“HEllo” 单双引号可以灵活运用
标量的声明
可以在任意时刻随时声明,默认值为空
作用域
包变量:perl中的package是一个包,在默认的情况下,标量是包内的全局变量
私有变量:
my变量,本层模块{}之间可以
local变量,本层已经本层之下的模块,子函数,可以
数组
是标量的一中合集
以@作为标识,从0到全部占满内存
列表直接量
(1,2,3) ##包含1,2,3的列表
(1,2,3,)##最后,会被省略
(“test”,1,2)
可以用“…"产生,每次加1
(1…5) ##1,2,3,4,5
(5…1) 空列表
纯字符串使用qw,可以省略“”
qw(fajfdls,fafasf,fdafs)
数组之间赋值
特殊数组赋值
通过索引访问数组元素
特殊索引值
引用
变量、变量名、地址
软引用
根据不同的指令,区分到底是引用的是标量还是数组
硬引用
标量可以省略{},但是数组不行
要区分的是引用和拷贝的区别,引用的话,修改引用的值,会影响原件,但是拷贝的话,修改拷贝后得值,不会影响原件。
下面展示一些 内联代码片
。
最后改变结果是 hello >hello2,而没有hello3
//
my $scalar = "hello";
my @array = ("hello","world","123");
my $scal_ref = \$scalar;
my $arr_ref = \@array;
##copy
my $scal_com = $scalar;
my $ array_0 = $array[0];
$$scal_ref = "hello2";
${$arr_ref}[0] = "hello2";
$scalar_com = "hello3";
$arr_ref = "hello3";
数据运算
运算符
算数运算符
用字符串做四则运算,从左往右看数字,第一位都不是数字的直接为0
乘幂操作 :**
取余
单目操作
单个单目符要用括号
比较
前大于后 1 一样0 小于 -1
逻辑
和verilog一样
逻辑与只要两个不是0.则与出来是1
位运算符
左移的时候会自动增加位数,剩下的补零
右移的话,也是剩下的补零
不要用在负数
赋值
逗号运算符
条件运算符
运算符的优先和结合