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

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/

 

本文完

初尝 Perl的更多相关文章

  1. 初尝Perl -- 使用aapt给apk软件包批量重命名

    不知道什么是Perl猛戳这个链接 http://zh.wikipedia.org/wiki/Perl     任务:                 随着手机/平板的各方面性能的不断发展(CPU,内存 ...

  2. 初尝Windows 下批处理编程

    本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...

  3. seajs初尝 加载jquery返回null解决学习日志含示例下载

    原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF  提取码 ...

  4. .NET领域驱动设计—初尝(三:穿过迷雾走向光明)

    开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...

  5. 初尝微信小程序2-Swiper组件、导航栏标题配置

    swiper 滑块视图容器. 很多网页的首页都会有一个滚动的图片模块,比如天猫超市首页,滚动着很多优惠活动的图片,用来介绍优惠内容,以及供用户点击快速跳转到相应页面. Swiper不仅可以滚动图片,也 ...

  6. 分布式设计《初尝memcached》

          之前听说过高性能的分布式缓存开源工具,但一直没有真正接触过,如今接触的产品中实用到过分布式缓存.所以决定一探到底.memcached是一个优秀的开源的分布式缓存工具.也是眼下比較火热的分布 ...

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

     .NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  8. Github原生CI/CD,初尝Github Actions

    Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...

  9. golang快速入门(五)初尝web服务

    提示:本系列文章适合对Go有持续冲动的读者 初探golang web服务 golang web开发是其一项重要且有竞争力的应用,本小结来看看再golang中怎么创建一个简单的web服务. 在不适用we ...

随机推荐

  1. Java笔记(二十四)……集合工具类Collections&Arrays

    Collections 集合框架的工具类,方法全部为静态 Collections与Collection的区别 Collection是集合框架的一个顶层接口,里面定义了单列集合的共性方法 Collect ...

  2. POJ 1661 Help Jimmy DP

    思路:Jimmy 跳到一块板上后,可以有两种选择,向左走或向右走.走到左端和走到右端所需的时间,容易算出. n如果我们能知道,以左端为起点到达地面的最短时间,和以右端为起点到达地面的最短时间,那么向左 ...

  3. Azure 虚拟机常见问题-上

    在 Azure 虚拟机上可以运行什么? 所有订户均可在 Azure 虚拟机上运行服务器软件.此外,MSDN 订户还可以访问由 Azure 提供的特定 Windows 客户端映像. 就服务器软件来说,你 ...

  4. android获取屏幕分辨率

    DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm. ...

  5. hdu 3996 (最大权闭合图)

    题意:有n个区域布局,每个区域有一些金矿,挖开金矿需要一定的费用,可以得到一定的利润,要想挖开一个金矿,必须挖开所有在这个金矿上边的金矿,求最大利益,给的数据价值太大,用64位. 分析:如果一个金矿可 ...

  6. 用Natvis定制C++对象在Visual Studio调试时如何显示

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用Natvis定制C++对象在Visual Studio调试时如何显示.

  7. 用NGUI做一个计时条!

    1.建立两个UISprite. 2.建立脚本CountingTime 3.编写脚本 public class CountTime : MonoBehaviour { //时间计时器 public fl ...

  8. 在JSP页面中输出JSON格式数据

    JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.html J ...

  9. HTTPResponse.read([amt]):只能read一次

    业务需要:我要写个tanx模拟器,给DSP发竞价请求. 下面是部分代码: def PostDataToDSP(self,url,postdata): headers = { 'Content-Type ...

  10. AWS s3 python sdk code examples

    Yet another easy-to-understand, easy-to-use aws s3 python sdk code examples. github地址:https://github ...