`
suli
  • 浏览: 45310 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

学习Perl的 10 个简单课程 -第二课

阅读更多

原文地址: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语句、比较操作符和一些操作。下一课将学习处理文本文件并进一步了解如何使用操作符和其他语句。

 

分享到:
评论

相关推荐

    strawberry-perl-5.32.1.1-64bit.msi

    windows环境的perl安装包,不用去官网下载了,测试好用。 strawberry-perl-5.32.1.1-64bit.msi离线安装包(官方),可避免从官网下载速度慢的问题。 windows环境的perl安装包,不用去官网下载了,测试好用。 ...

    strawberry-perl-5.32.1.1-32bit.msi

    windows环境的perl安装包,不用去官网下载了,测试好用。 strawberry-perl-5.32.1.1-32bit.msi离线安装包(官方),可避免从官网下载速度慢的问题。 windows环境的perl安装包,不用去官网下载了,测试好用。 ...

    strawberry-perl-5.32.1.1-64bit

    安装这个压缩包后,你可以通过命令行界面运行Perl脚本,或者利用Perl的交互式解释器(`perl -d`)进行调试和学习。对于开发者而言,Strawberry Perl提供了一种无缝的方式来在Windows环境中使用Perl,无需担心依赖项...

    perl-Data-Dumper-2.145-3.el7.x86_64.rpm

    RHEL 7.1安装MySQL 5.6的依赖包:perl-Data-Dumper-2.145-3.el7.x86_64.rpm ------------------------------------------------------------------------------------

    strawberry-perl-5.38.0.1-64bit-portable.zip

    综上所述,"strawberry-perl-5.38.0.1-64bit-portable.zip"是一个全面的Perl开发环境,适合那些希望在Windows上快速启动Perl开发而无需复杂安装过程的用户。通过其提供的工具和模块,用户可以轻松地进行文本处理、...

    strawberry-perl-5.32.1.1-64bit perl 解释器

    2. perl:这可能是Perl解释器的可执行文件,用户可以通过它运行Perl程序。 3. c:这个目录可能包含了与C语言相关的文件,因为Perl可以与C语言进行混合编程,提供更底层的控制和性能提升。 4. cpan:CPAN...

    strawberry-perl-5.32.1.1-64bit.7z

    标题中的"strawberry-perl-5.32.1.1-64bit.7z"表明我们正在讨论的是一个64位版本的Strawberry Perl 5.32.1.1软件的压缩包文件,该文件采用7-Zip格式进行压缩。Strawberry Perl是一个针对Windows平台的Perl解释器的...

    centos7 perl rpm依赖包

    装mysql时提示少perl,安装perl需要依赖包。已包含下面所有包, 版本号匹配。 [Linux]centOS7下RPM安装Perl 下载rpm依赖包,依照顺序安装. perl-parent-0.225-244.el7.noarch perl-...

    strawberry-perl-5.32.0.1-64bit.msi

    Strawberry Perl包含了C编译器和许多常用的Perl模块,方便开发者编写和运行CPAN(Comprehensive Perl Archive Network)上的第三方模块。 描述中提到的“解决官网下载速度过慢的问题”,意味着可能用户在尝试从Perl...

    perl-MailTools-1.53-1.noarch.rpm

    perl-MailTools-1.53-1.noarch.rpm

    strawberry-perl-5.32.1.1-32bit.zip

    Strawberry Perl是Perl在Windows平台上的一个流行的开源发行版,它提供了完整的开发环境,包括编译器、库和各种工具,使得用户无需额外安装其他依赖即可在Windows上进行Perl编程。 描述中的"strawberry-perl-5.32....

    strawberry-perl-5.32.1.1-64bit.msi和openssl-1.1.1-stable-SNAP-202

    Perl是一种强大的解释型、交互式、面向对象的脚本编程语言,广泛应用于系统管理、网络编程、文本处理、Web开发等多个领域。标题提到的"strawberry-perl-5.32.1.1-64bit.msi"是Windows平台上的Strawberry Perl发行版...

    linux 离线安装perl-IPC-Cmd

    2. `perl-Test-Harness-3.28-3.el7.noarch.rpm`: 提供了测试框架,用于编写和运行Perl模块的测试套件。 3. `perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm`: 是Perl模块构建工具,用于创建Makefile,帮助开发者...

    perl-DBI-1.52-2.el5.i386.rpm

    perl-DBI-1.52-2.el5.i386.rpm

    strawberry-perl-5.38.2.2-64bit.msi

    strawberry-perl-5.38.2.2-64bit.msi

    perl-HTTP-Server-Simple

    Perl-HTTP-Server-Simple是Perl编程语言中的一个轻量级Web服务器模块,它使得在Perl环境中快速搭建本地HTTP服务器变得简单易行。这个扩展包主要用于开发和测试用途,允许开发者在无需复杂配置的情况下,快速启动一个...

    perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

    perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

    perl-Text-Iconv-1.7-2.el5.i386

    perl-Text-Iconv-1.7-2.el5.i386

Global site tag (gtag.js) - Google Analytics