初尝 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/
本文完
初尝 Perl的更多相关文章
- 初尝Perl -- 使用aapt给apk软件包批量重命名
不知道什么是Perl猛戳这个链接 http://zh.wikipedia.org/wiki/Perl 任务: 随着手机/平板的各方面性能的不断发展(CPU,内存 ...
- 初尝Windows 下批处理编程
本文叫“ 初尝Windows 下批处理编程”是为了延续上一篇“初尝 Perl”,其实对于博主而言批处理以及批处理编程早就接触过了. 本文包括以下内容 1.什么是批处理 2.常用批处理命令 3.简介批处 ...
- seajs初尝 加载jquery返回null解决学习日志含示例下载
原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF 提取码 ...
- .NET领域驱动设计—初尝(三:穿过迷雾走向光明)
开篇介绍 在开始这篇富有某种奇妙感觉的文章之旅时我们先短暂的讨论一下关于软件开发方法论的简要: 纵观软件开发方法论,从瀑布模型.螺旋模型.RUP(统一软件开发过程).XP(极限编程).Agile(敏捷 ...
- 初尝微信小程序2-Swiper组件、导航栏标题配置
swiper 滑块视图容器. 很多网页的首页都会有一个滚动的图片模块,比如天猫超市首页,滚动着很多优惠活动的图片,用来介绍优惠内容,以及供用户点击快速跳转到相应页面. Swiper不仅可以滚动图片,也 ...
- 分布式设计《初尝memcached》
之前听说过高性能的分布式缓存开源工具,但一直没有真正接触过,如今接触的产品中实用到过分布式缓存.所以决定一探到底.memcached是一个优秀的开源的分布式缓存工具.也是眼下比較火热的分布 ...
- .NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)
.NET领域驱动设计—初尝(一:疑问.模式.原则.工具.过程.框架.实践) 2013-04-07 17:35:27 标签:.NET DDD 驱动设计 原创作品,允许转载,转载时请务必以超链接形式标明 ...
- Github原生CI/CD,初尝Github Actions
Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...
- golang快速入门(五)初尝web服务
提示:本系列文章适合对Go有持续冲动的读者 初探golang web服务 golang web开发是其一项重要且有竞争力的应用,本小结来看看再golang中怎么创建一个简单的web服务. 在不适用we ...
随机推荐
- cocos2d-x 从onEnter、onExit、 引用计数 谈内存泄露问题
/////////////////////////////////// //author : zhxfl //date : 2013.8.29 //email : 291221622@qq.co ...
- HW3.8
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- 算法导论学习-Dynamic Programming
转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------- ...
- glusterfs repo
Installing Gluster For RPM based distributions, if you will be using InfiniBand, add the glusterfs R ...
- 如何将可执行文件打包至APK并运行(转)
原文链接:http://www.lupaworld.com/home.php?mod=space&uid=345712&do=blog&id=248921 好久没有写bolg了 ...
- css3水平翻转
@keyframes cardFront { 0%, 40%, 100% { 02 opacity:1; 03 -webkit-transform:rotateY(0deg); 04 ...
- POJ 1657 Distance on Chessboard 简单的计算问题
Distance on Chessboard Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23096 Accepted ...
- 关于.net的一些基础知识(一)
一.GC工作原理: GC如其名,就是垃圾收集,当然这里仅就内存而言.Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root为基础,遍历应用程序在Heap上 ...
- centos中MySQL,VmTools安装,使用及异常
Linux(CentOS)中常用软件安装,使用及异常--MySQL,VmTools 本文主要是为了记录在工作中遇到的常用软件的安装过程,方便以后遇到相同情形时可以快速的查阅.主要讲述了MySQL, V ...
- 关于学习汇编的一些规则的理解(div mul cf of)
->1.div(除法) 被除数/除数 ->一共有三种格式的除法,分别是8位,16位,32位,这里的位数表示的是除数的位数 ->实现div其实也很简单就是除数为被除数的一半就ok - ...