Perl语言编程>>学习笔记
1. 使用反引号可以调用外部程序并返回程序的输出, 如 $cwd = `pwd`;
2. Perl 中的变量类型之间的区别主要是单数和复数; 单数变量称为标量 $scalar , 复数变量称为数组 @array . Perl中还有 Hash, Handle, typeglob 和引用 等一些变量类型. Perl中的标量可以使用 = 赋值, 可以指向其他变量或对象等等复杂数据结构的引用.
3.Perl中的引用
$ary = \@myarray; # 引用一个命名数组
$hsh = \%myhash; # 引用一个命名哈希
$sub = \&mysub; # 引用命名子程 $ary = [,,,,]; # 引用匿名数组
$hsh = {"Roger"=>"A", "r"=>}; #引用匿名哈希
$sub = sub{print "Hello\n";} #引用匿名子程 $fido = new Camel "Amelia"; # 引用一个对象
4. Perl中的复数变量
=> 需要在赋值等式右边提供列表环境, 当需要用编号查找时用数组, 如果需要用名称查找,则用散列
=> 可以通过列表赋值简单实现两个标量的值交换: ($var1,$var2)=($var2,$var1);
=> 因为散列是一种特殊的数组, 可以通过{}来获取单个散列元素 , 如: $roger{'name'} , 注意因为是处理标量, 所以前面用 $,而不是 % ,后者表示整个散列表.如果用了 %roger{'name'},那么得到的是键值一起. 另外胖箭头左边的字符串不需要加引号(自动加), 而右边不行(考虑要支持复杂数据结构), 所以不加可能会和保留字冲突.
=> 散列的键值之间可以用逗号隔开, 因此可能会在自动构造时用上, 如:
$longday = {"Sun","Sunday","Mon","Monday"};
5. Perl中的复杂数据结构
在Perl中, 逗号用于分隔,小括号用于分组, 但是并不能将一个列表转换成为标量; 如果需要将一个列表转换成一个标量要用 [ ] , 表示是一个匿名数组; 如果要将一个哈希转换成一个标量, 需要使用 {} 表明是一个匿名散列. 所以可以定义一个哈希
$wife{"Jacob"}=["A","B","C","D"];
# print "$wife{\"Jacob\"}[0]\n";
print $wife{"Jacob"}[]."\n"; ## A
$kids_of_wife{"Jacob"} = {
"A" => ["A1","A2"],
"B" => ["B1","B2"],
"C" => ["C1","C2"],
"D" => ["D1","D2"]
};
# print "$kids_of_wife{\"Jacob\"}{\"A\"}[0]\n";
print $kids_of_wife{"Jacob"}{"A"}[]."\n"; ## A1
6. Perl中的foreach循环中循环变量直接引用数组元素本身, 修改循环变量就是修改原始数组, 和java不同 , 可以在foreach 中修改原始数组.
7.使用行输入和$_可以是程序简洁并增加可扩展性, 如匹配一个文件中的 链接:
while(<FILE>){
print if /http:/;
print if /ftp:/;
print if /mailto:/;
...
}
Perl语言编程>>学习笔记的更多相关文章
- Perl语言编程>>学习笔记2
1. Perl中变量的常用表示 ${var} 相当于 $var $Dog::days 在Dog包里面的变量$days $#days @days 的最后一个索引 ] $days 引用的数组 ...
- Linux C语言编程学习笔记 (1)进程控制入门
想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...
- 【C语言编程学习笔记】利用462字节代码实现雅虎logo ACSII 动画!
ACSII 动画演示: 不过本文介绍的是另一个作品:c 代码实现雅虎 logo ACSII 动图. 运行后,你将会看到: 它是一个 20fps.抗锯齿的 Yahoo! logo ASCII 动 ...
- linux下的c语言编程学习笔记
视频参看csdn学院王阳和下面的linux环境下c语言编程基础相当的经典,其中王阳的视频讲的很好,相当的经典 编译hellogcc.c需要依赖/home目录下的头文件 为了避免同一个文件被includ ...
- 【C语言/C++编程学习笔记】:通俗易懂讲解 - 链表!学不会?不存在的!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 多线程编程学习笔记——async和await(一)
接上文 多线程编程学习笔记——任务并行库(一) 接上文 多线程编程学习笔记——任务并行库(二) 接上文 多线程编程学习笔记——任务并行库(三) 接上文 多线程编程学习笔记——任务并行库(四) 通过前面 ...
- 转 网络编程学习笔记一:Socket编程
题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...
- 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理
(1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...
- MySQL基础之事务编程学习笔记
MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...
随机推荐
- Spring security 如何设置才能避免拦截到静态资源
问题:继承FilterSecurityInterceptor自定义Spring security拦截器,但是每次都拦截了css等静态资源,应该如何设置? @Override protected voi ...
- python 笔记2016
列表,元组(不可添加和修改),字典 3种集合模式 模块----类---函数 要把文件变成双击运行,要把文件的属性选择python安装目录下的python.exe 1,查看数据类型 print(type ...
- 网络网关TCP/IP
vmware中的4种网络连接模式 2008-11-13 11:11:21 分类: 系统运维 很多朋友都用vmware来测试不同的系统,我结合自己的经验谈一下对网络设置的理解,不对的地方请指正. bri ...
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...
- Newtonsoft.Json(Json.Net)学习
转自原文 Newtonsoft.Json(Json.Net)学习笔记 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库.软件下载地址: http://www.newto ...
- 「小程序JAVA实战」小程序和后台api通信(28)
转自:https://idig8.com/2018/08/19/xiaochengxujavashizhanxiaochengxuhehoutaiapitongxin28/ 开发最重要的就是实操! 小 ...
- Java ArrayList的不同排序方法
本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...
- 利用redis限制单个时间内某个mac地址的访问次数
一.思路 用户mac地址唯一,可以作为redis中的key,每次请求进来,利用ttl命令,判断redis中key的剩余时间,如果大于零,则利用incr进行+1操作,然后再与总的限制次数作对比. 二.代 ...
- windows下Mysql5.7.10免安装版配置
免安装配置: 在环境变量 Path 中追加 %mysql_home%\bin; 配置mysql目录下的 my-default.ini 文件,在mysql 根目录下新建 data 文件夹 使用管理员权限 ...
- select sum也会返回null值
SELECT SUM(detail.VAL) FROM AI_SDP_ORDER_MONTH_DETAIL_201706 detail 如果所有的VAL都是null的话,或者根本就不存在 ...