设为首页 收藏本站
查看: 811|回复: 0

[经验分享] 学习Perl的 10 个简单课程 -第二课

[复制链接]
发表于 2017-5-19 09:15:44 | 显示全部楼层 |阅读模式
  原文地址:http://www.linuxforums.org/programming/learn_perl_in_10_easy_lessons__lesson_2.html

什么是变量?
每种计算机语言都会使用变量。如果您是编程新手,请记住代数方程中使用的变量。例如,
a + 5 = 7
在这个方程中,只有一个变量。变量名称是a,值是2。变量通常具有名称和值。在代数学中,变量的值通常是一个数字。在程序中,变量的值可以是数字、字符、字符串或复杂的对象,如数组、哈希表、数据结构等。在本课中,我们将使用变量保存不同类型的对象或值,以便您可以熟悉变量可以表示的各种不同的数据类型。

Perl中的变量
在Perl语言中有三种类型的变量:


  • 标量变量
  • 数组
  • 哈希表
  
标量变量保存单个值。在Perl语言中,标量变量的名称前总是有一个美元符号。例如:
$a = 2;
$message = "Hello World!";
数组可以保存更多的值。在Perl语言中,数组前总是加@符号,例如:
@colors = ("red", "green", "blue");@primaryNumbers = (1, 2, 3, 5, 7);
哈希表是一种特殊的数组:相关联的数组。它们与数组类似,但对于保存的每个值,还会保存该值相应的名称和标签。它们由成对的元素构成-键和数值。在Perl语言中,哈希表的前缀是百分号。例如:
%phoneNumbers = (Alicia =>  "090-64-773315",             Tom => "085-153-3214",             Jimmy => "085-285-4545");
在本课中将重点讨论标量变量和数组。它们易于使用且可以帮助我们编写自己的计算程序。

什么是命令行参数?
通过调用Perl解析器可以调用脚本:
perl myScript.pl
如何隐式调用解析器来调用脚本:
./myScript.pl
不管是隐式调用还是显式调用,都可以为脚本提供参数。这些参数在调用脚本时给出,只需简单地放在脚本名称后面:
./myScript.pl argument1 argument2 argument3
本课中,我们将编写一个计算器。它将计算简单方程(作为命令行参数给出)的结果。例如,如果希望方程计算5+6,那么调用方式如下:
./calculator.pl 5 + 6
在本示例中,给出了三个命令行参数:


  • 5
  • +
  • 6
  
Perl脚本将检查这些参数,识别出第二个参数,以便知道应该对第一个和第三个参数执行哪种操作,计算并在屏幕上打印结果。

Perl中的命令行参数
当解析器运行Perl脚本时,它将命令行参数保存在称为@ARGV的数组中。Perl语言是区别大小写的,所以此处必须是大写。@ARGV是一个数组,与Perl中的其他数组一样,可以对其执行下面的操作:


  • 键入$ARGV[0]可获取数组的第一个元素(请注意,由于这是单个值,所以它由标量表示,前缀是$)。
  • 键入$ARGV[1]可获取第二个元素的值,以此类推。
  • 键入$#ARGV可获取数组中最后一个元素的索引。
  
请注意,数组总是从0开始的,而不是从1开始。因此数组的第一个元素是元素0,而不是元素1。例如,元素索引编号12对应数组的第13个元素。这是许多编程语言中的贯例。数组中最后一个元素的索引为元素个数-1。
在本示例中,计算器需要我们给它三个参数:
./calculator.pl 5 + 6
因此,预计@ARGV数组将包含三个参数,$#ARGV等于2,而$ARGV[0]、$ARGV[1]和$ARGV[2]分别等于5、“+”和6。

第二个Perl脚本,计算器!
在Perl中,完成一件事有许多方法。请尝试自己编写计算器,然后与下面的方法进行比较。

#!/usr/bin/perl
$nbArguments = $#ARGV + 1;
print "number of arguments: $nbArguments\n";
exit(1) unless $nbArguments == 3;
$a = $ARGV[0];
$b = $ARGV[2];
$operation = $ARGV[1];
if ($operation eq "+") {        $result = $a + $b;}
elsif ($operation eq "-") {        $result = $a - $b;}
elsif ($operation eq "/") {        $result = $a / $b;}
elsif ($operation eq "x") {        $result = $a * $b;}
print "$a $operation $b = $result\n";
  
给脚本写权限:
chmod a+rx calculator.pl
  
运行:
./calculator.pl 5 + 6./calculator.pl 11 - 2./calculator.pl 4 x 3./calculator.pl 33 / 3
  
关于(exit(1) unless $nbArguments == 3;):


  • exit是一个Perl函数,它使脚本停止执行并返回给shell一个给定的代码。在本示例中,脚本停止并将1返回给shell。1在Unix中是一个贯例,表示发生错误。
  • unless是if的反义词。它们都是Perl语句。在本示例中,将调用exit,除非它后面的语句为真“$nbArguments == 3”。
  • 在Perl中,还有许多编程语言中,等号用于给变量赋值。例如,$nbArguments = $#ARGV + 1是给$nbArguments赋值。两个等于号"=="是比较操作符,是真还是假取决于两边的变量或值是不是相等。Perl还提供了另外一种操作符“eq”,用于比较字符串。“eq”用于字符串,而“==”用于数字。“=”是赋值操作符而不是比较操作符。
  • 简而言之,(exit(1) unless $nbArguments == 3;)的意思是停止执行脚本,除非给出三个命令行参数。
  
第5、6、7行代码只是简单地将命令行参数赋值给变量。第一个保存在$a中,第三个保存在$b中,第二个保存在
$operation中。
然后,根据$operation对$a和$b进行不同的运算,将结果保存在$result变量中。请注意,示例中使用了"if"和"elsif"语句。"elsif"是"else if"的缩写。
最后一行代码写出了操作的总结,将操作的内容和结果输出到屏幕。
本课中,我们学习了如何使用变量和命令行参数。简单了解了IF语句、比较操作符和一些操作。下一课将学习处理文本文件并进一步了解如何使用操作符和其他语句。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378937-1-1.html 上篇帖子: perl-opengl键盘事件与色彩 下篇帖子: perl对中文的处理(encode,decode)(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表