热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下Perl的安装及第一个程序运行

本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。
wget http://www.cpan.org/src/5.0/perl-5.20.1.tar.gz
tar -xzf perl-5.20.1.tar.gz
cd perl-5.20.1
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
View Code

上述这个过程大约耗时10多分钟

编辑第一个perl程序:

#!/usr/local/bin/perl
$value = 9.01e+21 + 0.01 - 9.01e+21;
print ("first value is ", $value, "\n");
$value = 9.01e+21 - 9.01e+21 + 0.01;
print ("second value is ", $value, "\n");

运行第一个perl程序:

[root@mdw zcw]# perl program3_3.pl 
first value is 0
second value is 0.01
View Code

 附Mac平台下的:

http://www.perl.org/get.html#osx

小例子:

以一个简单的文本查找来举例:
有一个pass.txt,里面存了很多用户名和密码的32位MD5值等信息,我现在要把里面的MD5值全找出并在屏幕上输出,pass.txt内容如下:
raymond:ec27bae8a6a68e7540e9
81c0f888dc92 ,jake:0d4cbaad3bbd
67c1bcd603b2a01468e8 ,This world nev
er dies:e8a7e2db3141e0c9baf819a8e495f651 ,da
mesdale:b2ee7d25dc385b3cb5d596d5cb2d6
47b ,shekinah:5da4266d3de6dbaf425a2
d4fc16225d0 ,jhin:3360d0103043bca029a5
a9b3561c9fc5 ,ajmp_4444:f6e28e2a2d1b1b
14adbc47534da454b5 ,ichoi:1b4d3c02d20d2f306
acdeff8469715fc ,kathrinasayan:8320c41f1ddc956da42d7ff
46ad46203 ,buenferdinan
d:b9a1ee8824e58db7c1c5f4014
691bdca ,jinieuge_22:f8ba79b96fb
634fc450052686efe46d8 ,gilmore12
2002:17c79b29567c1f39a4391cfce06da5e0 ,mi
stymwah:64d6bbb2a411ef0561afc6300f1e57d1 ,serjs
88:898dd88cca7b2f65461bc491dacb9b25 ,serjs8
8:898dd88cca7b2f65461bc491dacb9b25 ,sheryld
aquioag:4d54f483e2eaf8ce64010
0d88f8a29eb ,jayson:9eef6a1f927654f24801f58
fe67bb1d4 ,Geraldine:8002d34dc747d707ccb
fb93fdaab9bce
可以看到,内容很乱,不但有用户名的干扰,还有逗号,冒号,换行等符号的干扰。
如果想用C等语言把里面的MD5整理出来是件很麻烦的事,在Perl下则不同了。
下面是我写的代码(find.pl):
# F:\Perl -w
while (<>)                        #打开参数文件并读入一行
{
    chomp($a.=$_);           #去掉行尾换行符,并接到上一行剩余字符串后面
    while($a=~/([\w]{32})/) #匹配32位MD5字符串(正则表达式处理文本,效率真是一流)
    {
        print $1."\n";            #输出匹配的MD5字符串
        $a=~s/.*$1//;             #删除匹配过的MD5字符串,以便下一次匹配
    }
}
然后在命令行下输入:
Perl find.pl pass.txt
就会把pass.txt里面的所有MD5值全输出的屏幕上。
运行结果如下:

ec27bae8a6a68e7540e981c0f888dc92
0d4cbaad3bbd67c1bcd603b2a01468e8
e8a7e2db3141e0c9baf819a8e495f651
b2ee7d25dc385b3cb5d596d5cb2d647b
5da4266d3de6dbaf425a2d4fc16225d0
3360d0103043bca029a5a9b3561c9fc5
f6e28e2a2d1b1b14adbc47534da454b5
1b4d3c02d20d2f306acdeff8469715fc
8320c41f1ddc956da42d7ff46ad46203
b9a1ee8824e58db7c1c5f4014691bdca
f8ba79b96fb634fc450052686efe46d8
17c79b29567c1f39a4391cfce06da5e0
64d6bbb2a411ef0561afc6300f1e57d1
898dd88cca7b2f65461bc491dacb9b25
898dd88cca7b2f65461bc491dacb9b25
4d54f483e2eaf8ce640100d88f8a29eb
9eef6a1f927654f24801f58fe67bb1d4
8002d34dc747d707ccbfb93fdaab9bce

这段代码除去注释和大括号,只有短短5句代码,Perl的精辟可见一斑!
注:代码中判断32位MD5我用的是/([\w]{32})/,如果怕其它字符干扰还可以改为/([0-9a-fA-F]{32})/。
我开始写的代码在处理有换行符的时候,是先把读入的文件保存到一个变量里,使它变成一行,但觉得那样效率/内存占用率等方面会不太好,所以改成了现在这个样子,读一行判断一次,有匹配的就输出,没有则把读入的内容加到下一行。
国外很多黑客网站公布的脚本漏洞的exp都是用Perl写的,我想这也是Perl使用方便的原因吧。

教程网址:

http://www.yiibai.com/perl/perl_variables.html

例子二:(I/O)

#!/usr/bin/perl

open(DATA, "");

while()
{
   print "$_";
}
View Code

可参考资料:

http://www.yiibai.com/perl/perl_operators.html#perl_operators


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
author-avatar
好天气
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有