
Perl
文章平均质量分 59
zy12805
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
perl中的format(未完待续)
perl提供了一个简单的机制帮助格式化输出,产生简单的格式化报表。包括 1. 格式声明format; 2. 执行write格式声明如下:format FormatName =Fied linevalue line.注意:1. 如果省略了FormatName,将会定义STDOUT2. 最后一行的英式句号不能丢。格式变量:原创 2018-01-19 17:21:02 · 1485 阅读 · 0 评论 -
perl中模块以及模块中的函数的引入
在perl中提供了大量的模块以及别人写好的模块,可以安装使用。1> 例如可以用use File::Basename,引入模块,并且可以直接使用这个模块里面的全部函数。 use File::Basename;my $dir = "/var/www/html";my $bname = basename $dir;print $bname."\n";outp原创 2017-12-28 15:19:21 · 2491 阅读 · 0 评论 -
array slice和 hash slice
在perl中如果以@开头表示的是一列数据,更像复数形式,而以$开头,是表示某一个元素。1> 数组slice:use Data::Dumper;my @name = (1,2,3,4,5,6,7);@name = @name[4,1,3];print Dumper(@name);Output:$VAR1 = 5;$VAR2 = 2;$VAR3 = 4;原创 2017-12-27 17:56:40 · 649 阅读 · 0 评论 -
perl grep and map
Perl中的grep可以从列表中取出某些需要的元素。grep 第一个参数是一个块,其中$_依次为列表中的每一个值,返回一个Boolean(true/false)值。剩下的参数是相应的列表。grep 会首先计算表达式的值,这和foreach 循环一致。如果块中最后一个表达式的返回值为true,则这个元素会被返回。1> my @test = grep { $_ % 2} 1...10输出@te原创 2017-12-26 15:05:00 · 357 阅读 · 0 评论 -
用Net::SMTP发送带附件的邮件
use Net::SMTP;use MIME::Lite;my $DESTINATION = '3.3.3.3';my $DOMAIN1 = "pc1.com";my $DOMAIN2 = "pc2.com";my $MAIL_USR1 = 'test001';my $PSW1原创 2017-11-24 15:11:15 · 2851 阅读 · 0 评论 -
用脚本(openssl)搭建一个self-signed certificate的https server
网上有很多介绍如何创建self-signed certificate的文章,但是有个缺点是每一步必须输入多个参数,写脚本的时候就得写成交互式的,为了写脚本的方便性,本文通过配置文件来创建一个self-signed certificate。1. 先创建一个文件夹: mkdir /etc/httpd/ssl2. cd /etc/httpd/ssl3. 写一个配置文件self_s原创 2017-08-17 17:32:07 · 1020 阅读 · 0 评论 -
curl访问https网站时,先导入certificate,然后再访问
1. 先导入到curl的certificate文件中my $outfile = '/tmp/logs/test.cer';my $tranfile = '/tmp/logs/test.pem';my $curlcert = '/etc/pki/tls/certs/ca-bundle.crt';导入之前需要将cer文件转换成pem文件:`openssl x509 -原创 2017-09-21 17:32:31 · 1728 阅读 · 0 评论 -
shell中使用curl时,数据为乱码的解决方法,以及一些参数的解释
在使用shell中的curl访问baidu时,返回值为乱码,可通过|iconv -fgb2312 -t utf-8方式解决:eg :curl -v -m 10 -6 https://www.baidu.com|iconv -t gb2312 -f utf-8 2>&11> -v 会打印出curl的整个的debug信息2> -m 是设置timeout信息,这里设置的是10s原创 2017-09-20 17:23:07 · 7934 阅读 · 0 评论 -
Perl中模式匹配后,返回的子字串可存储在标量、列表、哈希中
举例说明:1. 标量: 匹配成功返回1,匹配失败返回0;my $res = ($string=~/value='(\w+)'/);print "$res\n";output:12. 列表:use Data::Dumper;my $string = "hello perl";my @perls = $string =~ m/hello/ig ;原创 2017-09-20 10:11:32 · 614 阅读 · 0 评论 -
perl中Net::Telnet的errmode使用方法
Net::Telnet模块中errmode可以设置出错时的处理方式:errmode:共有四个值,这里讨论两种,die和return$mode = $obj->errmode; # 这种方式是获得当前的出错时的处理方式的值,默认是"die"$premode = $obj->errmode($mode); #这种方式是定义一个新的出错时的处理方式的值,并返回之前的值原创 2018-01-16 16:05:51 · 986 阅读 · 0 评论 -
使用Xvfb实现无界面Selenium自动化测试注意事项
在自动化测试时,我们经常用到的是Selenium的无界面运行。这个可以通过Xvfb实现。1. 首先要安装Xvfb,网上安装的教程也很多了,这里不赘述了。2. 启动Xvfb:Xvfb :16 -screen 0 1920x1200x24 &3. 这里做了几个实验叙述如下:1> 在不启动Xvfb的情况下,直接在VNC客户端或者带界面的客户端找个terminal运行如下程序perl原创 2018-01-23 10:58:42 · 4024 阅读 · 0 评论 -
perl中的引用
1. 创建引用:1.1 用反斜杠操作符: $arr = \@ARGS;$arr = \$str;$hashref = \%hash;1.2 匿名数据1.2.1 匿名数组组合器:用方括弧创建一个匿名数组的引用:$arrayref = [1, 2, ['a', 'b', 'c', 'd']]; 通过$arrayref->[2][1] 访问数值“b”。eg:原创 2018-01-30 14:09:37 · 627 阅读 · 0 评论 -
Net::FTP使用ipv6的地址
use Net::INET6Glue::FTP;use Net::FTP;my $ip = '2001:1100::200'; my $ftpuser = 'anonymous'; my $ftppass = '-anonymous@'; my $ftp = Net::FTP->new ($ip, Debug => 1,Passive =>1, Timeout ...原创 2018-04-25 14:23:22 · 6473 阅读 · 0 评论 -
Net::OpenSSH中master_opts指定不验证hostkey
use Net::OpenSSH;our $PC2 = "testPC2";our $pc2_ssh = Net::OpenSSH->new( "$PC2", user => "root", ...原创 2018-04-23 10:34:30 · 611 阅读 · 0 评论 -
使用perl的模块Selenium::Remote::Driver选择下拉框的某一项
my $tool_elm = $driver->find_element("//select[\@id='current-diag-tool']"); # my @opt_elms = $driver->find_child_elements($tool_elm, "//option"); my @opt_elms = $driver->...原创 2018-04-04 16:10:33 · 378 阅读 · 0 评论 -
perl递归遍历文件夹
my $dir = '/test/test.pl';#my $dir = '/test';sub printdir{ my $dir = shift; if(-f $dir){ print "$dir\n"; return; } if(! -d $dir){ print "this is not a dir\n"; } o...原创 2018-04-10 16:20:05 · 1207 阅读 · 0 评论 -
perl实现的一个模式替换题目
在网上看到一个perl模式匹配的题目,自己试了下结果,留个底:以下是一个文件的一部分:block1 LAYER1 a0=56, b0=147.345989944561, c0=11.0225098942223 a1=76, b1=174.434168420681, c1=253.89644118973 a2=42, b2=117.7749258651...原创 2018-04-10 11:25:23 · 468 阅读 · 0 评论 -
perl中$/的作用
$/在perl中是输入记录分隔符,影响perl对"行"的理解。默认是换行符"\n".也可以定义为其他的内容:需要特别注意的是,$/的值是字符串,不是模式匹配。1> 不修改$/的内容,默认为"\n"eg: test.plopen WRI, "$content = ; #读取一行@lines = ; #将读取的所有行放入@lines数组中。close WRI;原创 2018-03-26 09:46:07 · 8798 阅读 · 1 评论 -
使用perl的Net::SMTP::SSL模块发送smtps带附件的邮件
use Net::SMTP::SSL; use MIME::Lite; my $mail_from = '[email protected]'; my $mail_to = '[email protected]'; my $mail_subject = "Perl smtps testing1\n"; my $username原创 2018-03-13 16:55:12 · 2926 阅读 · 0 评论 -
perl实现基本的排序算法
use Data::Dumper;#插入排序sub insert_sort{ my (@arr) = @_; my $n = $#arr+1; my $tmp; my $i; my $j; if($n == 0 || $n == 1) { return "count: $n\nno need to sort.\n"; } fo...原创 2018-03-18 21:09:26 · 1182 阅读 · 0 评论 -
Perl中system和反引号··的使用区别的
perl调用子进程的最简单的方式是用system。1. 返回值问题1> $out = system "date"; print "out: $out\n";output:Mon Jul 24 11:25:50 EDT 2017out: 0 (执行成功的时候,system返回的值是0,如果想要将命令的运行结果放入到变量$out中,要用`date`)原创 2017-07-24 17:06:20 · 3923 阅读 · 0 评论 -
Perl中的alarm、eval、die的联合使用
1. eval:eval是一个表达式,而不是if和while这样的控制结构,eval块发生严重错误时,eval块会停止执行,但程序不会崩溃。所以在程序中执行有可能引起严重错误的代码块,但又不想影响后续程序的执行时,可以把这部分代码块放入eval中。eva块正常执行,还是发生了严重错误,放在$@中,如果没错,$@为空,否则存放错误的原因。可以用$@的boolean值判断结果:print $@ i原创 2017-08-23 14:02:46 · 2337 阅读 · 0 评论 -
在centos中用脚本给firefox导入certificate
在写自动化测试脚本时,如果想给firefox导入certificate,可以使用certutil工具。具体介绍可以看https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Tools/certutilcertutil -A -n \"CN=SonicWALL Firewall DPI-SSL\" -t \"u,u,原创 2017-08-02 10:19:23 · 945 阅读 · 0 评论 -
脚本telnet失败,而host上直接telnet是成功的
直接在host上telnet XXXX是可以的,在pc1上直接运行tqtest也是可以的,但是从auto中运行脚本就会报错:Connection closed by foreign host.并且在/var/log/messages中显示:Aug 14 22:55:42 VTB93-PC2 xinetd[18654]: START: telnet pid=18688 from=13原创 2017-08-15 16:06:35 · 1344 阅读 · 0 评论 -
%SIG
linux中信号就是变成中遇到的中断,用来监控和控制其他进程发生了什么异步事件。信号只用来通知某一进程发生了什么,不会传递任何数据。LINUX中常见信号:=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=HUP 1 A 检测到挂起INT原创 2016-12-22 17:03:30 · 463 阅读 · 0 评论 -
fork详解
这个函数通过调用 fork(2) 系统调用,从一个进程中创建两个进程。如果它成功,该函数给 父进程返回新创建的子进程 ID,而给子进程返回0。如果系统没有足够的资源分配一个新的 进程,那么调用失败并返回undef。文件描述符(以及有时候还有在那些描述符上的锁)是共享的,而所有其他的东西都是拷贝的——或者至少看起来是那样的。在早于 5.6 版本的 Perl 里,未冲刷的缓冲区在两个进程里都是没有转载 2017-01-03 17:38:51 · 330 阅读 · 0 评论 -
Perl fork
转自:http://blog.csdn.net/politefish/article/details/5567207首先说说 fork函数。这个函数用来创建一个进程,不过创建方法有些不太好理解。 先看下面的程序fork-test.pl。我是用perl写的,不过相同的功能也可以用 C 来完成。#!/usr/bin/perl#------------------------------转载 2017-01-03 17:38:28 · 987 阅读 · 0 评论 -
转:使用IO::Socket::INET模块实现socket编程
转自:http://blog.chinaunix.net/uid-26000296-id-3929863.htmlIn this article,let us discuss how to write Perl socket programming using theinbuilt socket modules in Perl.Perlsocket modules转载 2017-01-03 17:37:02 · 405 阅读 · 0 评论 -
Sys::AlarmCall
use Sys::AlarmCall; $result = alarm_call($timeout1,$func1,@args1); @result = alarm_call($timeout2,$func2,@args2);原创 2017-01-03 17:35:14 · 225 阅读 · 0 评论 -
index、rindex和substr
1. index:$where = index($big, $small);1> 从大字符串中查找小字符串,字符位置从0开始编号。如果子串不存在,返回-1.2> index总是报告子串出现的第一个位置,可以通过第三个参数来决定从哪一个位置开始查找。eg:$world = "Howdy world!";$where1 = index($world, 'w'); //2原创 2017-01-03 17:33:40 · 361 阅读 · 0 评论 -
perl
eval{ alarm 10; print strftime("%Y-%m-%d %H:%M:%S\n", localtime(time)); print "now begin to sleep 15s\n"; sleep 15;};原创 2016-12-22 17:06:20 · 233 阅读 · 0 评论 -
find或者test查看某一文件夹下某一文件是否存在
1. find:find dir -type f -name "*filename*"eg:[root@VTB93-PC2 ~]# find /var/www/html -name 'index2.html'/var/www/html/index2.html[root@VTB93-PC2 ~]# find /var/www/html -name 'index2.*'/v原创 2017-03-06 11:03:25 · 1047 阅读 · 0 评论 -
perl中bless的理解
转载自:http://blog.csdn.net/liangrockman/article/details/5674168bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键。 所谓bless就是把 类型信息 赋予 实例变量。 程序包括5个文件:person.pm :实现了person类 dog.pm :实现了转载 2017-03-14 14:49:05 · 512 阅读 · 0 评论 -
perl Selenium::Remote::Driver使用
在用Selenium::Remote::Driver进行界面测试时,会发现perl Selenium::Remote::Driver和http://search.cpan.org/~gempesaw/Selenium-Remote-Driver-1.12/lib/Selenium/Remote/Driver.pm给出的方法不全面,也不能够达到测试全部功能的效果。其实在use Selenium::R原创 2017-04-10 16:56:10 · 897 阅读 · 0 评论 -
用变量定义模式匹配字符串时,用单引号和双引号的区别
my $match_str = 'Host:\s*www\.facebook\.com\s*Command:\s*GET\s*Policy:'. '\s*CFS\s*Default\s*Policy\s*Info:\s*\d*\(From\s*DPI\)'; if($logs =~ m/$match_str/is){原创 2017-08-10 15:40:48 · 1310 阅读 · 0 评论 -
Perl的system后使用单引号和双引号以及其中包含变量的区别
下面通过两个示例,来更加明了的解释他们的区别:1. $home = "/dev"; $out = system "ls -l $home";(双引号) print "out: $out\n";output: 输出的是/dev文件夹下的内容;2. $home = "/dev"; $out = system 'ls -l $home';(单引号)原创 2017-07-24 17:28:44 · 2502 阅读 · 0 评论 -
quotemeta函数为预定义的字符前加反斜杠
quotemeta函数为预定义的字符前加反斜杠。很多时候在定义一个好一个字符串后,想在模式匹配中也用这个字符串去匹配,但是又担心里面有预定义的字符,比如.等,可以用quotemeta这个函数。eg:my $quote_ipv4 = quotemeta($remote_ipv4);原创 2017-07-24 15:20:38 · 617 阅读 · 0 评论 -
CentOS 命令行通过命令获取ipv4和ipv6地址
1. 方法一:dig $INTERNET_URL AAAA +short2. 方法二:nslookup原创 2017-08-08 14:59:44 · 6926 阅读 · 0 评论 -
Perl中指定函数参数类型
今天看到一个函数如下这么写的,开始不是很理解为什么这么写,也不是很明白这种参数值如何传入。eg:sub downloadPage(\%$)最后我的传入方式是:$SONICOS->wgetPage($name, $outfile);原创 2017-08-01 16:23:30 · 525 阅读 · 0 评论 -
perl q qq qr qw qx 区别与使用方法
转载自:http://www.cnblogs.com/tobecrazy/archive/2013/06/28/3161784.html1.q 相当于 单引号' ' 转义字符无效 q可以使用()[] {} // ,,2.qq 相当于" " 转义字符有效 qq可以使用()[] {} // ,,3.qw 相当于 ('' ,'' ,'转载 2017-04-24 16:53:28 · 2676 阅读 · 0 评论