exit在perl中的意思

上一篇 / 下一篇  2008-12-21 13:15:35 / 个人分类:perl

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
什么是变量?51Testing软件测试网 {u Q4[ r
每种计算机语言都会使用变量。如果您是编程新手,请记住代数方程中使用的变量。例如,51Testing软件测试网 sm$Uq.L,nrD:p$G Y_
51Testing软件测试网!V2w,r MbT
a + 5 = 751Testing软件测试网.G#v$Y;vc7]n"D9S
在这个方程中,只有一个变量。变量名称是a,值是2。变量通常具有名称和值。在代数学中,变量的值通常是一个数字。在程序中,变量的值可以是数字、字符、字符串或复杂的对象,如数组、哈希表、数据结构等。在本课中,我们将使用变量保存不同类型的对象或值,以便您可以熟悉变量可以表示的各种不同的数据类型。51Testing软件测试网8kb&l]WEG

E6cRb^d#K0Perl中的变量51Testing软件测试网*@j0N _"m!?xSH-K6w
在Perl语言中有三种类型的变量:
  • 标量变量
  • 数组
  • 哈希表
51Testing软件测试网T.yx}g

标量变量保存单个值。在Perl语言中,标量变量的名称前总是有一个美元符号。例如:51Testing软件测试网 p8f(f+nZ wM

o ~#D7bV%n(H$n*p0$a = 2;51Testing软件测试网5I U6E7W6K
$message = "Hello World!";51Testing软件测试网EE{deM+?j j*D
数组可以保存更多的值。在Perl语言中,数组前总是加@符号,例如:
mU@1n TM5u\/l-rw0
+@;VQ*v1y0@colors = ("red", "green", "blue");@primaryNumbers = (1, 2, 3, 5, 7);
^:\1FVQpU;n0哈希表是一种特殊的数组:相关联的数组。它们与数组类似,但对于保存的每个值,还会保存该值相应的名称和标签。它们由成对的元素构成-键和数值。在Perl语言中,哈希表的前缀是百分号。例如:51Testing软件测试网lg(w-T~Tp

GM)C1jH.K0%phoneNumbers = (Alicia => "090-64-773315", Tom => "085-153-3214", Jimmy => "085-285-4545");51Testing软件测试网4K NYF}
在本课中将重点讨论标量变量和数组。它们易于使用且可以帮助我们编写自己的计算程序。51Testing软件测试网W#N0yy:j;L0x L
51Testing软件测试网.k N}K5cc
什么是命令行参数?51Testing软件测试网5I5^X%f\1@\ E ]0?[
通过调用Perl解析器可以调用脚本:51Testing软件测试网b I3k3I8~

-_z!nHV7i+H0perl myscrīpt.pl51Testing软件测试网HmzZ7R!HYDk
如何隐式调用解析器来调用脚本:
_PFr6pv(j&U051Testing软件测试网v,ha"P(oc m-z.?x!S
./myscrīpt.pl51Testing软件测试网"SKk3n\7M;j
不管是隐式调用还是显式调用,都可以为脚本提供参数。这些参数在调用脚本时给出,只需简单地放在脚本名称后面:51Testing软件测试网7iBp3V:bxG[
51Testing软件测试网l~$et],Kn;WFT5F
./myscrīpt.pl argument1 argument2 argument3
.BX6Z {(cc0本课中,我们将编写一个计算器。它将计算简单方程(作为命令行参数给出)的结果。例如,如果希望方程计算5+6,那么调用方式如下:51Testing软件测试网4~ HY%F |'Q'|9DK K
51Testing软件测试网J"DW T}7nM9A8b
./calculator.pl 5 + 6
CA g.i F4p0在本示例中,给出了三个命令行参数:

-L N"b0UgT0
  • 5
  • +
  • 6

`.A^6z dv+e^/gz0Perl脚本将检查这些参数,识别出第二个参数,以便知道应该对第一个和第三个参数执行哪种操作,计算并在屏幕上打印结果。
0A2Jq5gy8n0
%L&SU]4?bx0Perl中的命令行参数
z;[k bu0当解析器运行Perl脚本时,它将命令行参数保存在称为@ARGV的数组中。Perl语言是区别大小写的,所以此处必须是大写。@ARGV是一个数组,与Perl中的其他数组一样,可以对其执行下面的操作:51Testing软件测试网.K M,UN4WW@ T5n

  • 键入$ARGV[0]可获取数组的第一个元素(请注意,由于这是单个值,所以它由标量表示,前缀是$)。
  • 键入$ARGV[1]可获取第二个元素的值,以此类推。
  • 键入$#ARGV可获取数组中最后一个元素的索引。
51Testing软件测试网 Z#f.x/P\{1L4R9G$]5GU

请注意,数组总是从0开始的,而不是从1开始。因此数组的第一个元素是元素0,而不是元素1。例如,元素索引编号12对应数组的第13个元素。这是许多编程语言中的贯例。数组中最后一个元素的索引为元素个数-1。51Testing软件测试网w/AvY&Y8Ym h
51Testing软件测试网 \?uXg#BDueM
在本示例中,计算器需要我们给它三个参数:
m8r F+S*?`G.g ]*J0
b P_ rp^6u-G0./calculator.pl 5 + 651Testing软件测试网~{/l7A D?d
因此,预计@ARGV数组将包含三个参数,$#ARGV等于2,而$ARGV[0]、$ARGV[1]和$ARGV[2]分别等于5、“+”和6。
Lta DO|1H0
![+n9xh'H.V,u0第二个Perl脚本,计算器!
a2z I.Mz+ARAy0在Perl中,完成一件事有许多方法。请尝试自己编写计算器,然后与下面的方法进行比较。

1n*?Y(h }~/E}1u0
Perl代码
  1. #!/usr/bin/perl   
  2. $nbArguments = $#ARGV + 1;   
  3. print "number of arguments: $nbArguments\n";   
  4. exit(1) unless $nbArguments == 3;   
  5. $a = $ARGV[0];   
  6. $b = $ARGV[2];   
  7. $operation = $ARGV[1];   
  8. if ($operation eq "+") {        $result = $a + $b;}   
  9. elsif ($operation eq "-") {        $result = $a - $b;}   
  10. elsif ($operation eq "/") {        $result = $a / $b;}   
  11. elsif ($operation eq "x") {        $result = $a * $b;}   
  12. print "$a $operation $b = $result\n";  

._ ]0Cbc#Oq0给脚本写权限:
x(|r D~r!F9A!yW0P#|s0chmod a+rx calculator.pl

/{,Q/~S#k%|$c h9p051Testing软件测试网%M*h.GU m4?;r%M

运行:
8n'mA,T#O0./calculator.pl 5 + 6./calculator.pl 11 - 2./calculator.pl 4 x 3./calculator.pl 33 / 351Testing软件测试网6qK0b,Ie*HI6]

{g*v'd [5Sr0关于(exit(1) unless $nbArguments == 3;):

%r(?(v-O-g%I5] M_#C0
  • exit是一个Perl函数,它使脚本停止执行并返回给shell一个给定的代码。在本示例中,脚本停止并将1返回给shell。1在Unix中是一个贯例,表示发生错误,0表示正确执行,没有错误。
  • unless是if的反义词。它们都是Perl语句。在本示例中,将调用exit,除非它后面的语句为真“$nbArguments == 3”。
  • 在Perl中,还有许多编程语言中,等号用于给变量赋值。例如,$nbArguments = $#ARGV + 1是给$nbArguments赋值。两个等于号"=="是比较操作符,是真还是假取决于两边的变量或值是不是相等。Perl还提供了另外一种操作符“eq”,用于比较字符串。“eq”用于字符串,而“==”用于数字。“=”是赋值操作符而不是比较操作符。
  • 简而言之,(exit(1) unless $nbArguments == 3;)的意思是停止执行脚本,除非给出三个命令行参数。
51Testing软件测试网*S/a3FbV;_Z Me

第5、6、7行代码只是简单地将命令行参数赋值给变量。第一个保存在$a中,第三个保存在$b中,第二个保存在51Testing软件测试网 _F/XYn7?9fS
$operation中。51Testing软件测试网 ^Nj4E#X(U
51Testing软件测试网 f7^(_IE @:g
然后,根据$operation对$a和$b进行不同的运算,将结果保存在$result变量中。请注意,示例中使用了"if"和"elsif"语句。"elsif"是"else if"的缩写。51Testing软件测试网Q2p6o|;^ xlZ2|

DgO? E5p0最后一行代码写出了操作的总结,将操作的内容和结果输出到屏幕。51Testing软件测试网^ a/T,n`&Q{z

TAG: Perl perl

 

评分:0

我来说两句

Open Toolbar