-
神奇的perl
收藏最佳perl入门
最近更新文章
探秘perl-解析perl源码(4)
voidPerl_Slab_Free(pTHX_ void *op){
//释放某个slab片区
I32 * const * const ptr = (I32 **) op; I32 * const slab = ptr[-1]; PERL_ARGS_ASSERT_SLAB_FREE; assert( ptr-1 > (I32 **) slab ); ass ...
探密perl-解析perl源码(3)
本系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
如果是调试模式,则定义Perl_pending_Slabs_to_ro、S_Slab_to_rw、Perl_op_refcnt ...
探密perl-解析perl源码(2)
本本系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1、
1)Perl本身有三种主要的数据类型:
①标量(scalar)
探密perl-解析perl源码(1)
本系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
op.c
* A Perl program is compiled into a tree of OPs. Each op contains
* structural pointers (eg to its siblings and the next op in t ...
神奇的perl-第六个任务(12)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
5.1以城市为单位进行统计我们以perl4-13.pl脚本为基础,以城 ...
神奇的perl-第六个任务(11)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
3.5列表批量操作-map
map将某项操作批量分别用于列表的每个元素:
map 子程序块 列表
map 表达式,列表
比如:
map print,@z; #输出@z的每个元素
map say,@z; #输出@z的每个元素,每个元素占一行
@y=ma ...
神奇的perl-第六个任务(10)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
使代码更简单-$_和$!
Perl代码很简洁,使用预定义变量会更简单更优雅,对于懒惰的程序员是个福音呀。最实用的是$_和$!两个预定义变量。
1、$_是在执行输入和模式搜索操作时使用的默认变量。
例如,在屏幕上输出iplog.txt的内容。
#perl4-2 ...
神奇的perl-第六个任务(9)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
4.3 IP地址匹配
IP地址使用32位二进制地址格式,通常可用以点号划分的4个十进制数来表示,如:192.168.1.1。可用正则模式串如下描述IP地址:
((\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3})
例如:
# ...
神奇的perl-第六个任务(8)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
4.获取网页
如何取得ip来源地区?不用重新发明轮子,我们使用外部工具。
在GOOGLE搜索“ip查询”,可搜索到很多提供此项服务的网站,选择http://www.ip138.com/进行ip查询,在IP地址或者域名栏内输入221.226.19.186。IP ...
神奇的perl-第六个任务(7)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
我们编写Utf2Gbk模块,实现编码自动转换。
#Utf2Gbk.pm文件
package Utf2Gbk;#包名
#以下两行令本模块 继承Exporter 类,必须要有这2行,否则无法输出符号给外部代码使用
require Exporter;
our ...
神奇的Perl-第六个任务(6)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
在WINDOWS控制台中正常运行需要将utf8编码转换成GBK编码,因此单独编写WINDOWS下运行的程序perl4-18-win.pl:
#!c:/perl/bin/perl
#!/usr/bin/perl
#perl4-18-win.pl
# perl4_18 ...
神奇的Perl-第六个任务(5)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1.1 跨平台运行
Perl程序虽然可以跨平台运行 ...
神奇的Perl-第六个任务(4)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
4) 通过指定文件句柄MYTXT的编码,指定my.txt使用GBK编码
open MYTXT,”>my.txt”;
binmode(MYTXT, ':encoding(BGK)');
1) 输出unicode字符,perl4-17.pl部 ...
神奇的Perl-第六个任务(3)
1. CPAN 本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
Perl程序员有个巨大的宝库,那就是CPAN。CPAN是Comprehensive Perl Archive Network的缩写,收集了大量有用的Perl模块及其相关的文件。我们可以在www.cpan.org找到CPAN
神奇的Perl-正则表达式(9)
2.1 反引用
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
同一正则表达式中,反斜杠加上一个整数来表示反引用,用反引用保存正则模式中括号内匹配部分,\1表示匹配到的第一部分,\2表示匹配到的第2部分,从左至右按照每对括号匹配到的字串匹配,以此类推。
例如,取出被一对相同 ...
神奇的PERL-第六个任务(2)
本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1) module是 在Perl 里可复用的基本的单元,实质为定义在一个同名文件(以.pm结尾)里面的包。例如:
我们先定义mydeep模块(mydeep.pm):
#mydeep.pm文件
package mydeep;#包名
神奇的PERL-第六个任务(1)
2.1 第六个任务声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
BOSS交待一个任务,对某客户网站的访客进行网站流量分析,有以下要求:
1、按来源地区统计人数。
2、能在WINDOWS和LINUX下运行。
网站提供类似于以下格式的访问日志(iplog.txt),每项用TAB分 ...
神奇的Perl-perl处理输入和输出(4)-在子程序中使用引用传参
声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1. 在子程序中使用引用传参
到目前为止,我们只介绍了如何给传给子程序值,子程序对传进来的参数进行有效修改时,需要使用引用传参。
我们以完成加法子程序为例,传3个参数给该子程序,前2个参数是要计算的数,第3个参数是计算结果。
#perl1-16. ...
神奇的Perl-Perl语法(3)
1.1 print基本用法
Perl中有一些预定义的文件句柄,如标准输入STDIN、标准输出STDOUT、和标准错误STDERR。print为输出语句,可以输出到这些文 ...
神奇的Perl-正则表达式(8)
声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
2.1 贪婪匹配与最小匹配
1、贪婪匹配试图匹配最长字符串。
例如:
deep and future love deepfuture
/deep.+future/匹配了deep and future love deepfuture
...