初尝 Perl

本文将阐述以下几方面内容:

1、什么是Perl

2、Perl有什么用

3、Windows 下的Perl环境搭建

4、Perl 版Hello World

5、Perl 语法梗概

6、一些参考资料


什么是Perl

Perl 是一门由 Larry Wall(拉里·沃尔)设计并实现的一门脚本语言,Larry Wall设计这门语言的最初的目的为了让UNIX 上得报表处理工作变得更方便。Perl 第一版的发行时间为 1987年(Python第一版的发行时间为 1991年、Ruby第一版的发行时间为 1995年,这三种程序设计语言经常被放在一起做比较)。

Perl的来自单词Pearl(珍珠的意思),或许在设计者 Larry Wall 眼里,Perl如珍珠般珍贵

Perl的吉祥物为骆驼据说是因为Oreilly出版的畅销书Programming Perl的封面是一匹骆驼,Perl社区就采用了骆驼作为Perl语言的吉祥物。

 

Perl 有什么用

引用维基百科的说法,Perl的用途很广,除了CGI以外,Perl还被用于图形编程、系统编程、网络编程、金融、生物等领域。由于其灵活性,Perl被称为脚本语言中的瑞士军刀。在CPAN上有大量优秀Perl的库。在Linux和Mac OS 上都是内置Perl的。总结为一句话——Perl很有用,当需要脚本语言的时候,不妨考虑下Perl。这些我们了解即可。

本篇文章为初尝Perl,定位为了解Perl的梗概,博主目前现实工作中也没用到Perl,仅仅当一个知识储备,以后用到Perl的时候再深入学习一番。

 

Windows 下的Perl环境搭建

1、访问 http://www.perl.org/ 下载Perl Windows的实现版本,这里有两个版本(Strawberry Perl 和 ActiveState Perl)这两个版本没什么大的区别,博主选择了后者ActiveState Perl 5.20 

2、安装 ActiveState Perl 5.20 ,一路默认安装即可

3、验证 Perl 是否安装成功,在命令提示符下输入 perl –v

如出现上图所示信息表示 Perl 已安装成功

 

Perl 版Hello World

1、打开一个文本编辑器(如Notepad++),输入如下内容

# perl-w
print "Hello World";

在名利提示符下运行结果为(代码保存在 1.pl 中)

上面的 # 是注释符号, perl –w 是要求 perl 显式 Warmming 信息的选项

 

Perl 语法梗概

1、 变量定义,在 Perl下有好几种定义变量的方法,我捡最常用两种说明:

单数变量:以$ 打头,仅表示一个变量对象

复数变量:以@打头,表示一个数组

例1:单数变量

# perl-w
$pi = 3.141592;
print $pi;

例2:复数变量

# perl-w
@digital = (a..z);
print @digital; #打印a到z的所有小写字母

 

2、每个语句以分号“;”结束

 

3、简单的数学运算

# perl-w
$a = 2;
$b = 3;
print $a + $b;    # 加法
print "\n";
print $a - $b;    # 减法
print "\n";
print $a % $b;  # 模运算
print "\n";
print $a ** $b; # 幂运算

 

4、比较操作符 及 if 分支结构

比较 数字 字符串 含义
等于 == eq 判断相等与否
不等 != ne 判断不等与否
小于 < lt 判断小于与否
大于 > gt 判断大于与否
小于或等于 <= le 判断不大于与否
大于或等于 >= ge 判断不小于与否
比较 <=> cmp 相等为0,前者大为1,否则为-1

也许读者看到这个会奇怪,为什么有两套比较操作符,其实我也很奇怪,但是Perl设计人就是这样设计的,咱不计较。这两组比较符要求待比较参数先转换为合适的参数类型后比较。光说不练假把式看代码:

# perl-w
$a = "a";
$b = "b";
if($a == $b){
    print "两变量相等";
} else {
    print "两变量不相等";
}
# 会打印两变量相等 因为$a 和 $b 都是字符串转换为数字都会失败,返回相同的默认值,所以相等

# perl-w
$a = "a";
$b = "b";
if($a eq $b){
    print "两变量相等";
} else {
    print "两变量不相等";
}

if分支包括 if 、if –else 、if –若干个elsif-else 3种

 

5、循环

Perl 有4种循环 while 、do-while、for、foeach

# perl-w
# 打印1-100 被3整除的数
$var = 1;
while($var <= 100){
    if($var % 3 == 0){
        print $var;
        print " ";
    }
    $var += 1;
}

do-while 略

# perl-w
# 打印1-100 被3整除的数
for($var = 1;$var <=100;$var++){
    if($var % 3 == 0) {
        print $var;
        print " ";
    }
}

foreach 的格式为:

foreach $i (@some_list){

   statement_1;

   …

   statement_n;

}

# perl-w
# 打印1-100 被3整除的数
# (1..100)返回的是一个数组
foreach $var ((1..100)){
    if($var % 3 == 0){
        print $var;
        print " ";
    }
}

在 for 和 foreach 中有两个循环控制关键字——last 和 next。 last 相当于break,next 为 continue,有C基础的人都能看懂什么意思。

 

6、函数

函数的定义为用关键 sub 声明

sub methodName{

  statement_1;

  …

  statement_n;

}

参数列表存在 @_ 中

如函数带返回值,结尾用 return 语句接口

看代码

# perl-w
sub add{
    foreach $para (@_) {
        print $para;
        print " ";
    }
    print "\n";
    return $_[0] + $_[1];    # 带返回值
}
print add(3,4);

 

 

一些参考资料

1、小骆驼书

2、大骆驼书

3、Perl 官网 http://www.perl.org/

 

本文完

时间: 2024-11-05 13:35:54

初尝 Perl的相关文章

初尝Mcafee之在ePO中进行策略和客户端任务设置【06】

一.策略和客户端任务概述 在ePO中点击"菜单",可以看到一个策略的大分类:ePO就是通过分配策略和客户端任务给客户端代理,然后代理将这些策略和客户端任务分配给本地相应的Mcafee杀毒防护软件进行执行: 策略是针对软件的内在参数和计划任务的配置,例如VirusScan是否扫描压缩文件,VirusScan的扫描计划的设置: 客户端任务是针对软件的外在交互,例如安装,部署,更新,信息统计等: 二.策略和客户端任务的分配结构: 策略和客户端任务的分配结构有点跟Windows Server的

《iOS应用逆向工程》学习笔记(五)初尝越狱插件OpenSSH

首先在越狱机子上装上OpenSSH插件,然后查看设备的IP地址,这里假设为192.168.xxx.xxx. 然后用Mac上的Terminal通过Open SSH连接到设备上(初次登录密码是alpine,必须立即修改,否则任何人都可以连接到你的机子上搞破坏). 连接命令为:ssh [email protected]设备IP地址 修改密码命令为:passwd 例如: $ ssh [email protected] The authenticity of host '192.168.xxx.xxx (

初尝backbone

backbone的基础知识在此将不再进行介绍.自己后续应该会整理出来,不过今天先把这几天学的成果用一个demo进行展示. 后续可运行demo将会在sinaapp上分享,不过近期在整理sinaapp上demo分享版块的重构,恕不能及时更新上去. 手把手教你搭建Hello World 虽然这次的开篇程序叫做helloworld有点牵强,但是我还是喜欢叫它为hello world~^_^ 以下程序改编自著名的todos程序,todos是什么?其实如果学过backbone的,肯定看到过todos的实例,

Challenge Checkio(python)—初尝python练习网站

最近在找点python语言练习的网站,发现这个网站不错 http://www.checkio.org/ 页面设计的也比较漂亮,比较适合学习python的语法知识.不过注册这个网站 开始就得解决一个python问题,不过很简单. 1 #python3.3 is inside 2 def checkio(els): 3 return els 4 5 if checkio([1, 2, 3, 4, 5, 6]) == 6: 6 print('Done!') 对上面的代码 修改checkio中的函数 函

初尝Mcafee之CEE企业版概述【01】

Mcafee CEE企业版英文全称Mcafee Complete Endpoint Protection –Enterprise,是多种Mcafee的防护软件的套件: Mcafee CEE是C/S模式管理的,服务端控制端名为ePO,全称ePolicy Orchestrator;客户端是由Mcafee Agent和各类Mcafee防护软件组成. ePO通过Mcafee Agent来部署,安装,执行,管理,监控在客户端的Mcafee防护软件,其架构如下: (1)Mcafee EASI是ePO的安装套

seajs初尝 加载jquery返回null解决学习日志

原文地址:http://www.tuicool.com/articles/bmuaEb 今天早上初尝seajs,发现一个非常蛋疼的事情,使用官方demo中的jquery是没有问题, 下载官方最新版jquery 2.1.1发现console.log($)返回null,百思不得其解!只能求助度娘! 在GitHub发现了玉伯的说明 < 直接调用 jQuery 插件等非标准模块的方法 > 不过这方法在2.3版本貌似已经不行,seajs.modify方法已在这版本移除! https://github.c

AWS--EC2初尝

环境是Mac OSX. 尝试了一下amazon的EC2服务,注册基本比较简单,需要一张信用卡. 进入控制台后选择EC2,点击launch instance,选择free tier的Amazon linux,一路点下去.比较重要的是保存好key pair,之后连接主机需要.网上看是以.pem为后缀的,但我下下来是以.cer为后缀的,不过基本不影响. 等待主机启动好了之后可以连接了,在命令行切换到之前key所在路径,用chmod修改权限为400(只有所有者可读). 接着输入“ssh -i <key文

分布式设计《初尝memcached》

之前听说过高性能的分布式缓存开源工具,但一直没有真正接触过,现在接触的产品中有用到过分布式缓存,所以决定一探究竟.memcached是一个优秀的开源的分布式缓存工具,也是目前比较火热的分布式缓存的解决方案雏形.memcached的服务端产品本身功能简洁,简单易用,但是玩法多种多样.但是事实上它是一个"伪分布式"解决方案,它本身并没有实现服务端分布式(服务端的memcached server之间是不能通信的),所谓的分布式都是依靠客户端来实现,而目前市面上提供了客户端分布式实现的开源工具

.NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)

.NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangqingpei557.blog.51cto.com/1009349/1173006 1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.4.工具 1.5.过程 1.6.框架 1.7.项