安藏理工大学 ANHUI UNIVERSITY OF SCIKNCE TECHNOLOGY Section 4 Perl programming 3
3 Section 4 Perl programming
安藏理工大学 ANHUI UNIVERSTTY OF SCIENCE TECHNOLOGY 4.1编写第一个Perl程序 >第一步:选择一个自己喜欢的编译器,例如我们选择编 辑器。 >第二步:在编辑器中输入Perl程序:vi helloworld..pl >代码如下:helloworld.pl >#!/usr/bin/perl > print "Hello,word!In"; >第三步:设置该文件为可执行文件: > chmod +x helloworld.pl >第四步:运行程序即可: > $./helloworld.pl 4
4 4.1 编写第一个Perl程序 ➢ 第一步:选择一个自己喜欢的编译器,例如我们选择vi编 辑器。 ➢ 第二步:在编辑器中输入Perl程序:vi helloworld.pl ➢ 代码如下:helloworld.pl ➢ #! /usr/bin/perl ➢ print “Hello,word!\n”; ➢ 第三步:设置该文件为可执行文件: ➢ chmod +x helloworld.pl ➢ 第四步:运行程序即可: ➢ $./helloworld.pl
安藏理工大学 4.1.1提问并保留结果 >在此基础上做稍微复杂一点的改变,我们使该程序按你的 名字打招呼。要做到这一点,需要一个变量来存放姓名 我们使用$name来保存姓名。 #!/usr/bin/perl printf"请问您的姓名?"; $name=; chop(Sname); printf"你好,$name,欢迎光临n"; 这里第三行表示从终端获得行输入并赋值给$name, 这里的$name的值有一个换行符,第四行chop($name) 表示去掉$name的最后一个字符(即换行符)。第五行显示 输入。 5
5 4.1.1 提问并保留结果 ➢ 在此基础上做稍微复杂一点的改变,我们使该程序按你的 名字打招呼。要做到这一点,需要一个变量来存放姓名。 我们使用$name来保存姓名。 #!/usr/bin/perl printf "请问您的姓名?"; $name=; chop($name); printf "你好, $name,欢迎光临!\n"; 这里第三行表示从终端获得行输入并赋值给$name, 这里的$name的值有一个换行符,第四行chop($name) 表示去掉$name的最后一个字符(即换行符)。第五行显示 输入
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY 4.1.2增加选择 现在让我们为admin编写一个特殊的欢迎辞,而对其他人则采用 普通欢迎辞。要达到这样的效果必须将输入的姓名与admin作比较, 如果相同则执行特殊功能。 #!/usr/bin/perl printf"请问您的姓名?"; $name=; chop($name); if($name eq“admin)K printf"欢迎admin:进入本系统n"; }else printf"你好,$name,欢迎光临ln"; 这里第五行用eq操作符对两个字符串进行比较,相同则执行下 一句,否则执行else下的语句(是不是和C语言差不多?)。 6
6 4.1.2 增加选择 ➢ 现在让我们为admin编写一个特殊的欢迎辞,而对其他人则采用 普通欢迎辞。要达到这样的效果必须将输入的姓名与admin作比较, 如果相同则执行特殊功能。 #!/usr/bin/perl printf "请问您的姓名?"; $name=; chop($name); if ($name eq “admin"){ printf "欢迎admin进入本系统!\n"; } else { printf "你好, $name,欢迎光临!\n"; } 这里第五行用eq操作符对两个字符串进行比较,相同则执行下 一句,否则执行else下的语句(是不是和C语言差不多?)
安藏理工大学 4.1.3猜测密码 >现在已经可以对admin发不同的欢迎辞,但如何加上密码 来控制权限呢?比如说,可以让除admin以外的人都必须 输入密码直到正确为止: #!/usr/bin/perl $password=:"wsxy";#密码为wsXy printf"请问您的姓名?"; $name=; chop(Sname); if($name eq“admin")K printf"欢迎admin进入本系统n", 7
7 4.1.3 猜测密码 ➢ 现在已经可以对admin发不同的欢迎辞,但如何加上密码 来控制权限呢?比如说,可以让除admin以外的人都必须 输入密码直到正确为止: #!/usr/bin/perl $password="wsxy"; #密码为wsxy printf "请问您的姓名?"; $name=; chop($name); if ($name eq “admin"){ printf "欢迎admin进入本系统!\n";
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY }else{ printf"你好,$name!ln请输入密码:"; $guess=; chop($guess); while($guess ne $password){ printf"密码错误,请重新输入:"; $guess=; chop($guess); 3 8
8 ➢ } else { printf "你好, $name!\n 请输入密码:"; $guess=; chop($guess); while ($guess ne $password){ printf "密码错误,请重新输入:"; $guess=; chop($guess); }
安藏理工大学 >这里先将密码保存在标量变量$password中,然后当不 是zd登录后,先显示欢迎语句,然后要求输入密码,通 过ne操作符将输入结果和$password相比较,密码相同 则退出,不同则一直循环下去。 9
9 ➢ 这里先将密码保存在标量变量$password中,然后当不 是zmd登录后,先显示欢迎语句,然后要求输入密码,通 过ne操作符将输入结果和$password相比较,密码相同 则退出,不同则一直循环下去
安藏理工大學 >当运行程序时,Pel的内部编译器首先遍历整个源程序, 把它转变为内部的字节码,它是程序的一种内部数据结 构。Perl的字节码引擎将运行这些字节码。 10
10 ➢ 当运行程序时,Perl的内部编译器首先遍历整个源程序, 把它转变为内部的字节码 ,它是程序的一种内部数据结 构。Perl的字节码引擎将运行这些字节码
安藏理工大学 ANHUI UNIVERSITY OF SCIENCE TECHNOLOGY 4.2标量数据 >标量是Pel中最简单的数据类型。大多数的标量是数字 (如255或3.25e20)或者字符串(如hello◆或者盖茨 堡地址)。 >标量数据可有操作符(如相加和串联),通常会产生一个 新的标量数据。标量数据的值可以存放在标量变量中。标 量可以从文件或设备读取,也可以写进去。 11
11 4.2 标量数据 ➢ 标量是 Perl 中最简单的数据类型。大多数的标量是数字 (如 255 或 3.25e20)或者字符串 (如 hello◆或者盖茨 堡地址) 。 ➢ 标量数据可有操作符(如相加和串联),通常会产生一个 新的标量数据。标量数据的值可以存放在标量变量中。标 量可以从文件或设备读取,也可以写进去
安藏理工大学 4.2.1所有数字内部的格式一致 整数(如255,2001等)和浮点数(有小数点的实数,如 3.14159,1.35x1025),在Perl中都当作双精度浮点数 来处理。这就是说在Perl内部没有整数值。程序中的整 数被当做等价的浮点数来处理。程序运行时,也许注意不 到这种转换,不应当寻找只属于整数的操作符(不能被浮 点数使用的),因为它们不存在 12
12 4.2.1所有数字内部的格式一致 ➢ 整数(如 255,2001 等)和浮点数(有小数点的实数,如 3.14159 ,1.35x1025),在Perl中 都当作双精度浮点数 来处理。这就是说在 Perl 内部没有整数值。程序中的整 数被当做等价的浮点数来处理。程序运行时,也许注意不 到这种转换,不应当寻找只属于整数的操作符(不能被浮 点数使用的),因为它们不存在