perl入门笔记(五)
来源:互联网 发布:js 获取元素当前位置 编辑:程序博客网 时间:2024/06/10 20:13
文件句柄:
程序里代表perl进程与外界之间的I/O联系的名称,他是这种“联系”的名称,并不是文件名称。
6个文件句柄是预留的,叫STDIN,STDOUT,STDERR,DATA,ARGV和ARGVOUT
Larry建议所有的文件句柄命名时都用大写字母
STDIN表示perl进程与它的输入源之间的联系,即标准输入流
die函数:
die函数会输出你写的信息到标准错误流中,然后让你的程序立刻终止并返回不为0的状态的错误码
$!表示什么?表示可读的系统错误信息
如果open失败,die会终止程序的执行,$!只能表示有系统服务请求时候的错误信息,不能是用户程序级别的。因为那个时候$!是无法捕捉到的。
if(!open LOG,'>>','logfile')
{
die "I can't open the file:$!";
}
say函数会自动添加换行符
如:
#!/usr/bin/perl -w
use strict;
use 5.010;
my $name="zhang";
print "$name\n";
print "$name","\n";
say $name;
为say指定一个文件句柄:
#!/usr/bin/perl -w
use strict;
use 5.010;
say BEDROCK "hello";
哈希:
哈希中键和值是任意的标量,其中键都会被转化为字符串。
其中键必须是唯一的字符串,值可以重复
访问和赋值哈希值:$hash{$some_key}
注意:使用的是大括号,而不是方括号
指代整个哈希:使用%,如%family_name
展开哈希:@array=%some_hash
这是一个简单的键值对列表,得到的顺序不一定是原来的,因为perl会为了检索的快速重新对其排序,所以使用hash的场合不应该对顺序有很严格的要求,至少可以很方便的再排序。
哈希复制:
my %new_hash=%old_hash
这个在实际中少用,因为perl要做的东西很多,大致上它会先将old_hash转化成列表,然后将列表元素构造键值对,然后形成新的new_hash
my %reverse_hash=reverse %any_hash
翻转哈希表,先将其转化为列表(key,value,key,value,...),然后翻转列表为(value,key,value,key,...),现在我们能够按照“值”找到“键”了。但注意这样的话表明原来的值对于也不应该是有重复的,因为这样的话翻转之后就会出问题。
胖箭头:
其实在perl中任何使用逗号分割的都可以替换成胖箭头
my %last_name=(
'fred'=>"flinstone",
'dino'=>undef,
'barney'=>'rubble',
)
无需引号的字符序列,称为裸字,它可以独立存在并且不加引号没有歧义。
注意:如果不是裸字,就会被作为表达式计算然后结果作为键。
#!/usr/bin/perl -w
use strict;
use 5.010;
my %hash=(
'a'=>1,
'b'=>'c',
'c'=>3
);
print %hash,"\n";
print keys %hash,"\n";
print values %hash,"\n";
如上可以打印出相应的key值和value值
each函数:
#!/usr/bin/perl -w
use strict;
use 5.010;
my ($key,$value);
my %hash=(
'a'=>1,
'b'=>'c',
'd'=>2,
'hello'=>'zhang'
);
while(($key,$value)=each %hash)
{
print "$key=>$value\n";
}
注意:$key,$value声明时要放在一起,不能这样写:my $key,$value;另外while怎么结束呢:该条件返回的是列表数量的个数,所以直到0的时候就会结束。
exists函数:
判断键是否存在,存在则返回真,否则返回假。无需关心键值
delete函数:
删除哈希中的键以及对应的键值,当键不存在时就直接结束而不发生任何错误提示。注意这与定义了一个哈希元素的值为undef的情况不同,至少两者的exists函数结果不同。undef时结果为真。
%ENV哈希:
#!/usr/bin/perl -w
use strict;
use 5.010;
print "$ENV{'PATH'}";
结果与操作系统相关。
- perl入门笔记(五)
- Perl入门(五)Perl文件读写
- perl语言入门笔记
- perl语言入门笔记
- perl入门笔记(一)
- perl入门笔记(二)
- perl入门笔记(三)
- perl入门学习笔记
- perl入门学习笔记
- perl学习笔记五----子程序
- perl学习笔记 - 快速入门!
- perl入门笔记(四)
- perl入门笔记(七)
- perl学习笔记五----模式匹配
- 【perl】学习笔记(五)--文件读写
- Learning Perl(Perl语言入门)学习笔记(1)
- Perl笔记:Perl语言入门(第六版) - 数据类型
- Perl语言入门笔记 第十一章 perl模块
- 如何选择工业相机
- 音视频基础
- 算法学习之希尔排序(java)
- 读《如何成为一个妖孽》
- 书评第001篇:《C++黑客编程揭秘与防范》
- perl入门笔记(五)
- 51-nod -1284 2 3 5 7的倍数
- 关于开发板不断eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 eth0: link down的问题
- Linux 内核中的 Device Mapper 机制
- ssh无法连接到远端Ubuntu的解决方法
- SpringMVC学习道路上的点滴---开发流程
- zoj 3829 Known Notation 贪心
- Java Web开发之详解JSP
- Prototype模式