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

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. Dynamic Vertex Buffers

    ynamic vertex buffers on the other hand allow us to manipulate the information inside the vertex buf ...

  2. java操作pdf添加页眉条码添加水印图片

    添加条码页眉以及图片水印 1. 引入jar包     1. itext-4.2.1.jar     2. itext-asian-5.2.0.jar     3. jbarcode-0.2.8.jar ...

  3. LeetCode:Restore IP Address

    93. Restore IP Addresses Given a string containing only digits, restore it by returning all possible ...

  4. centos 中查找依赖及库

    yum search ** yum whatprovides libQtGui.so.4

  5. Java读取文件夹大小的6种方法及代码

    (一)单线程递归方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequential { publ ...

  6. iOS消息推送机制的实现

    研究了一下Apple Push Notification Service,实现的很简单,很环保.原理如下 财大气粗的苹果提供了一堆服务器,每个ios设备和这些服务器保持了一个长连接,ios版本更新提示 ...

  7. PAT 1089. Insert or Merge (25)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  8. jsp <c:forEach> 判断第一条 或 最后一条记录

    <c:forEach>标签具有以下一些属性: var:迭代参数的名称.在迭代体中可以使用的变量的名称,用来表示每一个迭代变量.类型为String. items:要进行迭代的集合.对于它所支 ...

  9. SQLite 入门教程(二)创建、修改、删除表 (转)

    转于 SQLite 入门教程(二)创建.修改.删除表 一.数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table.视图 View.索引 Index.关系 Relationship 和触发器 ...

  10. 11.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。

    package com.hanqi.yzljs; public class yzljs { public static void main(String[] args) {     final dou ...