随笔分类 - perl
摘要:代码:usestrict;usewarnings;my$test="asdf";print"${test}_test2\n";#constantuseconstant{AAA=>"aaa",BBB=>"bbb",MIN_TOTAL=>12,SCORE_PASS=>90,SCORE_RED=>70,};printAAA;printSCORE_PASS;#twodimesionarraysmy@steps=(["aaa","aaavalue"],[&
阅读全文
摘要:对任何的函数将标准输出和错误输出重定向到对应的log文件。对任何的函数记录函数运行的时间。代码:#!/usr/bin/perlusewarnings;usestrict;nostrict"refs";subtestLogToStd{print"Teststdout:\n";openLOG,">2.txt";selectLOG;print"justatest\n";#recoverSTDOUTselectSTDOUT;print"justatest2\n";closeLOG;}subtest
阅读全文
摘要:转自:http://weidagang2046.blog.51cto.com/246444/45923/Perl作为一种脚本语言可以实时地生成和执行代码。这种特性可以把代码的编译推迟到运行时,所以又称为“动态代码”。另外,Perl也如Java、C++一样提供了异常处理机制。本文将初步探讨Perl中实现动态代码和异常处理机制的函数:eval。如有错误不足,欢迎讨论和批评指正。eval函数可以看作是Perl虚拟机,它的参数就是一段Perl代码。利用’perldoc –f eval’可以获取eval函数使用帮助,其中介绍了它的两种使用方式:leval EXPREXPR是一个的表达式,例如:eval&
阅读全文
摘要:Perl面向对象首先让我们来看看有关 Perl 面向对象编程的三个基本定义: 1. 一个“对象”是指一个“有办法知道它是属于哪个类”的简单引用。(对象就是引用变量) 2. 一个“类”是指一个“有办法给属于它的对象提供一些方法”的简单的包。(类就是包) 3. 一个“方法”是指一个“接受一个对象或者类名称作为第一个参数”的简单的子程序。(类的方法就是第一个参数为类名或对象的方法)一个类只是一个简单的包和 C++ 不同,Perl 并不为类定义提供任何特殊语法。实际上类只是一个包而已。你可以把一个包当作一个类用,并且把包里的函数当作类的方法来用。不过,有一个特殊的数组,叫做 @ISA,它说明了“...
阅读全文
摘要:代码:需要显式地定义变量且初始化。例如optionX。如果没有定义变量且显式初始化,且没有在命令行指定选项,则选项对应的变量将为未定义。#!/bin/perl-5.8.3/bin/perl$usewarnings;$usestrict;$useData::Dumper;$useGetopt::Long;$usePod::Usage;$our$g_opts;our$optionX='';#ifnotdefinedincommandline,itwillbeemptystringsubparse_opts{my$result=GetOptions("optionA=s&q
阅读全文
摘要:http://hyperpolyglot.org/scripting比较perl+pythonperl(1987)python(1991)基础模块导入usestrict;importos, re, sys版本查看$ perl-v$ python -V执行脚本$ perl foo.pl$ python foo.py交互模式$ perl -de 0$ python执行语句$ perl -e 'print("hi\n")'$ python -c "print('hi')"语句分隔;\n (newline)or;语句块{}Inde
阅读全文
摘要:经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如:修改前:[大家网]Mac OS X for Unix Geeks[www.TopSage.com].mobi修改后:Mac OS X for Unix Geeks.mobipython代码如下importosimportredefrename_dir(dir,regex,f):ifnotos.path.isdir(dir)ornotos.path.exists(dir):print("Theinputisnotonedirectoryor
阅读全文
摘要:use local::lib to install perl modules in your home directory ?https://metacpan.org/pod/local::lib + http://search.cpan.org/By default local::lib inst...
阅读全文
摘要:正则表达式 实例1) 不能是某些字符中之一[]用来表示匹配多个字符之一。[^]与[]相反,表示匹配与多个字符中的任一个都不匹配。:下图中,H是第一个与abcd都不匹配的字符。2) 匹配多个字符串中的2个或者一个匹配2次(|||) 用来表示多个字符串中的一个。(|||){n}用来表示多个字符串中的n个。:下图中,匹配的2个字符可以是同一字符串,也可以不是,例如abab,或efcd都匹配(ab|cd|ef){2}。3)匹配多个字符串中的一个字符串2次\number用来表示前面的()对应的group的匹配的结果。:下图中只能是svsv,abab或cdcd才匹配(sv|ab|cd)\1{1}, sva
阅读全文
摘要:一 基本知识millisecond 毫秒microsecond 微秒 nanosecond 纳秒1秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒二 perlperl中可以使用time或localtime来获得时间,time返回从1970年1月1日0点的秒数,localtime返回当前时间的字符串表示,或者年月日等得tuple表示。#!/usr/bin/perlusestrict;usewarnings;usePOSIXqw(strftime);#secondsfrom1970.01.0100:00:00my$ti=time();print$ti;print"\n&quo
阅读全文
摘要:常见数据类型的引用定义: 数据类型 定义 举例 标量变量 \$Var $Pointer = \$Var 数组 \@Array $Pointer = \@Array 哈希变量 \%Hash $Pointer = \%Hash 文件句柄 \*FILEHANDLE $Pointer = \ 常量 \常量
阅读全文
摘要:perl中的INC变量中包含了所有的perl module的查找路径。可以使用perl -V 来查看INC的值。1)默认地INC如下:@INC: C:/Perl/site/lib C:/Perl/lib .2)设置环境变量PERL5LIB来增加到INC,例如: set perl5lib=c:\perllibs 在设置perl5lib后如下, %ENV: PERL5LIB="c:\perllibs" @INC: c:\perllibs C:/Perl/site/lib C:/Perl/lib .3)在perl程序中修改INC, 例如:#!/usr/bin/perl -w pu
阅读全文
摘要:一 读xml1)xml实例[代码]2)代码[代码]3)结果二 写xml代码:[代码]三 更多常用参数:_[_list_]_#_in+out_-_important">KeyAttr => [ list ] # in+out - important or _{_list_}_#_in+out_-_important">KeyAttr => { list } # in+out - important 表示读取出来的dict中的key。_1_#_in_-_important">ForceArray => 1 #
阅读全文
摘要:Perl调用外部命令的方式和区别转自:http://hi.baidu.com/develop_skill/blog/item/d69bc0cbf010da4ff31fe72b.html主要的方式简述如下:1. system("command");使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。2. exec("command");效果同system命令类似,...
阅读全文
摘要:相同:都可以用来引用module(.PM)。不同:1) 区别在于USE是在当前默认的@INC里面去寻找,一旦模块不在@INC中的话,用USE是不可以引入的,但是require可以指定路径; 2)use引入的名称不需要后缀名,默认找.PM文件,而require需要后缀名,且后缀名可以为.PM或.PL; 实例:c:\perl目录下3个文件如下(且module文件的最后必须有1;)[代码]3)use语句...
阅读全文
摘要:perl的map函数的使用:语法map EXPR, LISTmap BLOCK LIST定义和使用对list中的每个元素执行EXPR或BLOCK,返回新的list。对每一此迭代,$_中保存了当前迭代的元素的值。返回值如果返回值存储在scalar标量中,则代表map()返回数组的元素个数;如果返回值存储在list中,则代表map()函数的数组;实例1 (将单词首字母大写)[代码]结果为JacobAl...
阅读全文
摘要:一 array1)实例Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usestrict;usewarnings;my@myarray=(123,"hello",456,'guy');foreach(@myarray){print"$_";}print"\n";foreachmy$item(@myarray){print"$item";}print
阅读全文
摘要:一 读写文件实例:[代码]注释:1)handle句柄,概念类似C++中的资源句柄,常用的打开文件时返回句柄。句柄使用类似<handle>,系统默认的输入输出句柄为<STDIN>,<STDOUT>和<STDERR>。2)open(FILE, $filename)打开文件到句柄<FILE>中;3)chomp去除string中的newline(...
阅读全文
摘要:一 package1) package 相当于C++中的namespace,不同的package下可以定义相同的变量和subroutines;2)在一个pl文件中可以定义多个package,每个package有一个单独的symboltable,每个symboltable中包含了此package中的变量和subroutines;3)package mypack;此语句定义一个名为mypack的包,从此以后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个package语句为止。默认地存储在main package中。4)在一个包中可以引用其它包中的变量或子程序,包名和变量名用
阅读全文
摘要:一 subroutines1)定义 sub NAME {...} . 不需要指定参数和返回值。函数内使用@_来访问函数传入的参数,一般函数内使用local( $var, $var2, $var3) = @_或my( $var, @vars) = @_;来访问函数的传入参数。如果没有使用return的话,默认地最后一条语句的值作为函数的返回值。$_[0]表示第一个参数,$_[$#_]表示最后一个参数...
阅读全文