
perl
Jimmy1224
这个作者很懒,什么都没留下…
展开
-
perl简单语句的修饰符
perl中常见的简单语句修饰符有 if unless while until foreach,它们demo语句分别如下:1. if 条件修饰符格式: Expression2 if Expression1 如果Expression1表达式为真,则执行Expression2表达式内容。#case1$x=5;print $x if $x==5; #====>输出5#case2$_="转载 2017-11-18 22:40:49 · 544 阅读 · 0 评论 -
perl语言中的定义枚举
perl语言中定义枚举变量和C语言中类似,默认都是从0开始,并依次递增1个单位; 也可以重新自定义枚举变量的起始值,示例如下:定义枚举变量:use enum qw(Sun Mon Tue Wed Thu Fri Sat);# Sun == 0, Mon == 1, etcuse enum qw(Forty=40 FortyOne Five=5 Six Seven);# Yes, you can原创 2018-01-04 00:41:20 · 1298 阅读 · 0 评论 -
自定义模块的创建和使用
创建perl模块Perl 模块是一个可重复使用的包,模块的名字与包名相同,定义的文件后缀为 .pm。末尾 1; 执行返回 TRUE,这是必须的,否则返回错误。Perl 中每个包有一个单独的符号表,定义语法为:package mypack;此语句定义一个名为 mypack 的包,在此后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个 package 语原创 2017-12-19 23:04:55 · 1745 阅读 · 0 评论 -
perl表达 匿名数组和匿名哈希
在perl中匿名数组用方括号[]来表达,匿名数组数组用大括号{}来表达, 我们可以用ref函数来验证结果:print "anonymous variable :", ref [],"\n";#ARRAYprint "anonymous variable :", ref {},"\n";#HASHARRAYHASH我们可以在类构造函数中定义匿名数组和匿名hash,作为特殊的成员变量使原创 2018-01-05 23:52:06 · 2094 阅读 · 0 评论 -
perl中字符串编码分析和注意事项
》在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编码: Ascii(octets)和utf8(string).perl内部字符串由flag标志位和数据区两部分组成,其存储结构如下:假如utf8 flag是On perl就会把数据区内容原创 2017-12-23 11:41:47 · 2476 阅读 · 0 评论 -
perl 文件测试符
文件测试操作符Perl提供了一组测试文件的操作符,借此返回特定的文件信息。所有这些测试操作符都写作-X的形式,其中X表示特定的测试操作,大多数测试操作符返回布尔真假值;操作符集:注意: 文件测试字符串中若包含中文,则要求是gbk编码才行具体的perl字符串编解码可参看perl中字符串编码分析和注意事项 例如:my $dir = "Folder";#创建文件夹mkd转载 2017-11-18 22:09:19 · 549 阅读 · 0 评论 -
base64转图片的两种方式
方式一:利用MIME::Base64模块完成base64转图片,代码如下:my $image_decoded= MIME::Base64::decode_base64($image64)open (my $handle, '>', 'image_file.jpg') or die $!;binmode $handle;print $handle $image_decoded;clo原创 2018-01-06 16:17:43 · 8883 阅读 · 0 评论 -
Perl hash转JSON格式的示例
#encode the JSON result into UTF-8,$json = JSON->new->utf8;#验证 utf8 标志位print "utf8 flag: ",$json->get_utf8,"\n";#输入是hashmy $hash = {1=>111, 2=>222,3=>333};print "scalar var: ", $json->encode($原创 2018-01-07 10:26:17 · 2626 阅读 · 0 评论 -
perl中的闭包使用
直接先上代码,看看示例一的实现:示例一:sub make_new_counter{ my $start = shift; #返回匿名函数 return sub{ #自由变量 print $start++ ,"\n"; };}#代码分析:#匿名函数的父函数是make_new_counter,两者间存在关联关系,同时匿原创 2018-01-07 15:51:02 · 749 阅读 · 0 评论 -
defined 函数使用
#如果给定的值不是undef, defined()函数会返回 true #如果给定值是undef 则返回false.my $test01 = "" ;#it return ture it will print string.if (defined $test01){ print "var is defined\n";}#it return false it will p原创 2018-01-07 16:34:26 · 2464 阅读 · 0 评论 -
判断变量是何种类型
在perl函数传递过程中,我们有时候需要判断入参是hash类型,还是数组时,我们可以使用ref系统函数来判断,代码如下:my %hash =();my @arr = ();my $hash_ref = {};my $var = ();#ref expr 要求expr是个引用,否则ref函数返回空print ref \%hash, "\n";print ref \@arr, "\原创 2018-01-07 21:34:57 · 3228 阅读 · 0 评论 -
perl exe执行提示缺少文件解决方法
在项目开发中,使用perl语言编译的exe可执行文件;在项目中使用了XML::LibXML模块;发现exe在本机电脑执行正常,但在其他同事执行时却提示缺少libxml2-2.dll等文件。问题现象:无法启动此程序,因为计算机中丢失libxml2-2.dll.尝试重新安装该程序以解决此问题。问题原因:在使用XML::LibXML模块中涉及到几个dll文件,在本机的perl安装目录存在所需的文件,而在其原创 2017-12-15 23:35:57 · 2886 阅读 · 0 评论 -
perl中创建多进程
本次项目中为了提高软件的运行效率,需要对pptx文件进行异步解压,通过运行发现Windows下多进程执行异常(调用fork函数创建子进程), 调用exe执行奔溃。其他非Windows平台好像没有这个问题。解决方法:在Windows下可以使用Win32::Process模块创建子进程,进行异步调用。process模块API函数列表:创建进程对象 Create($Obj, $AppName, $Co原创 2017-12-18 22:44:02 · 1084 阅读 · 0 评论 -
高精度gettimeofday()函数用法
在perl中可以通过use函数引入你需要使用的函数名称,以下是此次会用到的函数。#引用时间函数,包括sleep函数,gettimeofday 函数,tv_interval时间差函数use Time::HiRes qw(sleep gettimeofday tv_interval);1. gettimeofday 函数用法gettimeofday 函数返回的是从世纪元时间Epoch开始计算起的秒数,原创 2017-11-19 20:56:20 · 1930 阅读 · 0 评论 -
perl 中$1 $2代表的含义
以数字为名的变量保存的是上一次匹配操作(/pattern/)中,第n个小括号中的原符号所匹配内容。 $1就是第一对小括号中的原符号所对应的匹配内容。$2就是第二对小括号中的原符号所对应的匹配内容。my $str = "<p>hello world !</p>";#提取中间内容if ($str =~ /<p>(.*?)<\/p>/gs)#匹配<p>...</p>{ print "\转载 2017-11-15 19:39:38 · 21155 阅读 · 2 评论 -
perl 正则表达式使用技巧
Perl正则表达式语法所谓Perl正则表达式,就是一串特别设计过的字符串,可以按照你的意图用匹配操作寻找你要求的目标。我这里不是Perl手册,也不是教科书,所以我从例子开始,具体的完整说明还请查手册。1.1转义符号\前面说过缺省情况下Perl正则表达式要用/包起来,那么现在要寻找一个字符串里面有没有/怎么办?不是有歧义了么那个表达式。换你设计Perl语言该咋办?玩过C语言的人看到这里一定在嘿嘿笑,因转载 2017-11-16 22:36:17 · 993 阅读 · 0 评论 -
window cmd命令行下执行perl语句
windows cmd命令行下需要用双引号 “”来对命令行参数打包;举例如下:perl -e " print 'hello world' "; #print 'hello world' 这个是perl语句PS:window下面必须是双引号来包括,否则会报错: Can’t find string terminator “’” anywhere before EOF at -e line 1原创 2017-11-22 16:55:46 · 9713 阅读 · 0 评论 -
Perl中字符串编码的处理
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编码: Ascii(octets)和utf8(string).utf8 flag在perl内部, 字符串结构由两部分组成: 数据和utf8 flag. 比如字符串"中国"在perl内部的转载 2017-12-10 23:20:23 · 1660 阅读 · 0 评论 -
perl中单引号和双引号字符串区别
区别一: 单引号除了反斜字符和单引号外,单引号内所有字符都代表它们自己,比如“\t \n”都是代表字符串本身,即单引号内的\n并不是换行符,而是表示字面上的两个字符;而双引号中的反斜线更为强大,可以转义许多控制字符,双引号中“\t \n”分别代表水平制表符和换行;print 'hello world \t \n';print "hello world \t \n";结果:区别二:双引号支持变量内原创 2017-11-30 23:55:28 · 2505 阅读 · 0 评论 -
perl字符串操作符
.操作符点操作符用于连接字符串,例如:my $string1 = "i love ";my $string2 = "china \n";print $string1 . $string2;运行结果: i love chinax操作符字母x是代表字符串重复操作符,左操作数是代表要重复的字符串,右操作数代表要重复的次数,该操作数一般都会被转换成整数,例如:my $string3 = "china "原创 2017-12-03 12:48:26 · 7845 阅读 · 1 评论 -
perl中system函数和反引号` `使用区别
在perl中调用system(“cmd”)函数和使用反引号` cmd`均是调用系统命令,但两者使用上是有些细微差别。调用system函数返回的是该函数执行返回值,比如0表示执行正确,-1执行错误;同时会将cmd命令的结果打印到控制台界面;而反引号` `直接返回的就是该cmd的执行结果,但是不会屏幕上表现出来。具体代码如下:print "******call system() function\n";原创 2017-11-25 23:10:42 · 13360 阅读 · 0 评论 -
perl LibXML模块使用详解
关于perl中如何获取xml文件的指定内容,可以使用LibXML模块进行,该模块有强大的xpath匹配关系,可以很方便地获取想要的信息,整个模块使用说明,点击如下链接: https://grantm.github.io/perl-libxml-by-example/basics.html原创 2017-12-25 23:06:30 · 2086 阅读 · 0 评论 -
两个字符串连接输出乱码问题解决
在perl语言中,perl字符串格式包含两部分内容,一个是数据区,一个是utf8 flag标志位。 当utf8 flag是on时,数据区内容是以utf8编码格式去解读。 当utf8 flag是off时,数据区内容是以一个字节一个字节去解读。 当两个字符串相连接时,需要保证两个字符串都具有相同的格式,否则可以到处最终输出乱码,举例如下:slide1.xml文件内容:<?xml version原创 2017-12-26 23:11:42 · 2977 阅读 · 0 评论 -
hash 和hash引用的常见操作方法
hash和hash引用的常见操作方法如下:#init a hash my %hash = ();#init a hash reference my $hash_ref = {};# add a key/value pair to hash$hash{"key01"} = '111';$hash{"key02"} = '222';$hash_ref->{"key01"} =原创 2018-01-07 22:21:19 · 1416 阅读 · 1 评论