![2fd04d9be2a68e5baa6fb45f36649fd9.png](https://i-blog.csdnimg.cn/blog_migrate/f85241bf8c356b2848985d118e6b568f.png)
上期回顾
哈希是一组无序的键/值对
哈希的名字必须以%开头
哈希的键是唯一的
通过访问哈希的键即可获取键对应的值
对哈希指定的键再次赋值,即可更新
使用delete函数,通过哈希指定的键删除键值对
添加 key/value 对可以通过赋值来完成
预定义变量
Perl提供了大量的预定义变量,下面列举了常用的一些预定义变量:
$! 获取当前错误信息值,常用于die命令
# 通过open函数打开AAA.txt,如果不能打开, 则die ,输出$!中的信息# or 为逻辑运算符,如果前面为真,则不运行后面语句# die函数用于在命令或文件句柄失败时退出Perl脚本 open IN,"AAA.txt" or die $!;# 假设AAA.txt确实不存在,输出:# No such file or directory at Example.pl line 1.
$_ 在执行输入和模式搜索操作时使用的默认空格变量
# 示例# 通过while循环,逐行读取AAA.txt的内容while(){ # 并将每行打印到屏幕上 print;}# 上例等同于# 逐行读取的内容赋值给$_while($_ = ){ print STDOUT $_;}
$. 文件中最后处理的当前行号
# 通过while循环,逐行读取AAA.txt的内容while(){ # 如果行号大于6,则print if ($. > 6){ print; }}
$@ 由最近一个eval()运算符提供的Perl语法报错信息
# eval 、 $@ 用于报错捕获,可以基于获取到的报错进一步处理eval '$answer =' ; print $@ ;
@ARGV 含有命令行参数
#例如已有Example2.pl脚本,脚本内容如下:# 判断是否有外部传参if (@ARGV){ # 获取命令行传递的参数,并连接为一个字符串 print join("",@ARGV);}# 命令行执行脚本perl Example2.pl 1 23 4 5输出:12345
@INC 库文件的搜索路径
# 在执行脚本前,将一些包路径加入到@INC中# perl加载包时即查找@INC中是否存在该包BEGIN{ unshift (@INC,"/home/vvv/perl_package/");};
@_ 在子例程中,@_变量含有传递给该子例程的变量内容
# 示例# 自定义test_function函数sub test_function{ # 将传递的第一个参数,传递给变量$parameter my $parameter = shift; # 打印$parameter print $parameter ;}# 等同于上例sub test_function{ my $parameter = shift (@_); print $parameter ;}
%ENV 关联数组型变量%ENV含有当前环境信息
$1,$2, ... 正则捕获
$test_str = "There is no royal road to learning." ;$test_str =~ /no (.*?) road to (.*?).$/;print "$1\t$2\n" ;__END__(output)royal learning
$/ input record separator(输入分隔符)
# 示例$/ = ">";# 此时程序会将>视为每行结束,而非回车
0
3
总结
各种预定义变量的含义,简单示例。ps:
变量、数组、哈希、预定义变量,这些各自的特点需要分清楚才能正确使用。这一部分告一段落,如有不熟悉,要及时回顾啊~
下面我们就要开始学习各种函数,如同百宝箱一样~~
![5d82e07048f0b9e34611d19110c076b9.png](https://i-blog.csdnimg.cn/blog_migrate/d8feaf0c9116a5b58f01acc3100b0669.png)
perl 第六弹 变量 III
![1e78225eb1e12c077ed1ae36a8b3ad28.png](https://i-blog.csdnimg.cn/blog_migrate/cced5e2f2df41f1230579fd08b551864.jpeg)