1.Perl可以使用括号来改变优先级
2.对于数字的比较,Perl 提供了
< <= = = >= != 这些操作符。每一种返回的值为true 或者false
3.对于字符串比较,Perl 有如下的一些有趣的字符串比较符:
lt le eq ge gt ne。它们将一个字符接着一个字符的比较两个串来
判断它们的关系:相等,小于,等等。(注意,在ASCII 中,大写字母在小写字母的前面)。
4.if 控制结构
一旦能比较两个值时,就希望能根据这些比较结果作判断。和别的语言类似,Perl 中也提供了if 控制结构:
if($name gt ‘fred’){
print “‘$name’comes after ‘fred’in sorted order.\n”;
}如果需要另一种选择,可以使用关键字else:
if($name gt ‘fred’){
print “‘$name’comes after ‘fred’in sorted order.\n”;
}else{
print “‘$name’does not come after ‘fred’.\n”;
print “Maybe it’s the same string, in fact.\n”;
}
花括号是必须的(这一点和C 不同)。
5.Perl 不同于其它的一些语言,它没有Boolean 类型。它利用如下几条规则:
● 如果值为数字,0 是false;其余为真
● 如果值为字符串,则空串(‘’)为false;其余为真
● 如果值的类型既不是数字又不是字符串,则将其转换为数字或字符串后再利用上述规则◆。
◆这意味着undef(很快会看到)为false。所有的引用(在Alpaca 书中有详细讨论)都是true。
这些规则中有一个特殊的地方。由于字符串‘0’和数字0 有相同的标量值,Perl 将它们相同看待。也就是说字符串‘0’是唯一
一个非空但值为0 的串。
6.Perl 程序从键盘上得到输入,有一种简单方法:使用行输入操作符(line-input operator),<STDIN>。
◆是行输入运算符对文件句柄STDIN 的操作。
<STDIN>作为标量值来使用的,Perl 每次从标准输入中读入文本的下一行,将其传给<STDIN>。标准输入可以有很多种;
默认的是键盘。如果还没有值输入<STDIN>,Perl 会停下来等你输入一些字符,由换行符结束(return)。
◆坦白讲,是你的系统等待输入,Perl 等待你的系统。具体的细节与机器和配置有关。由于是系统而非Perl 控制你的输入,因此要更正错
误的输入通常可以在按下回车前使用退格键(backspace)。如果想更多的控制输入,可以使用Term::ReadLine 这个模块,在CPAN 中可
以下载到。
<STDIN>中的字符串通常由一个换行符作为结尾。因此,可以如下操作:
◆例外的情况是,标准输入流在行中间就结束了。当然,普通的文本文件通常不是这样。
$line = <STDIN>;
if($line eq “\n”){
print “That was just a blank line!\n”;
}else{
print “That line of input was: $line”;
}实际上,通常你不需要保留换行符,因此需要chomp 来去掉它。
7.chomp 操作对变量起作用,而此变量含有字符串。如果字符串结尾有换行符,chomp
可以去掉它。这基本上就是它能完成的所有功能,如下例:
$text = “a line of text\n”; #也可以由<STDIN>输入
chomp($text); #去掉换行符(\n)
8..基于Perl 中的一条基本原则:在需要使用变量的地方,可以使用赋值表达式来代替。我们有更简单的使用chomp 的方法。Perl 首先做赋
值运算,再使用这个变量。因此使用chomp 的最常用方法是:
chomp ($text = <STDIN>); #读入,但不含换行符
$text = <STDIN>;
chomp ($text); #同上,但用两步完成
9.chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。这个数字基本上没什么用:
$food = <STDIN>;
$betty = chomp $food; #得到值1
如上,在使用chomp 时,可以使用或不使用括号()。这又是Perl 中的一条通用规则:除非移除它们时含义会变,否则括
号是可以省略的。
如果结尾有两个或两个以上的换行符◆,chomp 仅去掉一个。如果没有,那什么也不做,返回0。
◆这种情况在一次读入一行时不会发生,但使用了输入分隔符(input separator)($/)(其不为换行符(\n)),read 函数,或者将一些字符串结
合起来就有可能发生。
10. while 语句可以循环执行其内部的一块代码直到其条件非真:
◆基本上每个程序员都有创建过无限循环语句的经历。如果程序不停的运行,你可以像关闭系统中别的程序那样来关闭Perl 程序。通常
是使用CTRL+C;检查你的系统文档来了解具体的信息。
$count = 0;
while ($count < 10) {
$count + = 2;
print “count is now $count\n”; #打印出2 4 6 8 10
}
条件中真假值的判断和if 结构中是一样的。和if 控制结构相同,花括号是必须的。判断条件在迭代前执行,如果条件为假,
则一次也不执行。
11.变量在第一次赋值前有一个特殊值undef,按照Perl 来说就是:“这里什么也没有,请继续”。如果这里的“什么也没有”是一些“数字”,则表现为0。如果是“字符串”,则表现为空串。许多操作当参数不恰当时返回undef。如果没做特殊处理,通常会得到0 或者空串。但应当知道如果警告是打开的,那Perl 在你不恰当的使用未定义值时会提醒你。例如,将一个undef 的变量赋给另一个变量不会有什么问题,但如果print 某个未定义的值则将引起警告。
12.能返回undef 的操作之一是行输入操作,<STDIN>。通常,它会返回文本中的一行。但如果没有更多的输入,如到了文件
的结尾,则返回undef◆。要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。
◆事实上,从键盘输入,不会有“end-of-file”,但其可重定向到文件中再输入。或者用户可能输入某些键,而系统将其作为end-of-file 看待。
$madonna = <STDIN>;
If ($defined ($madonna)){
print “The input was $madonna”;
}else{
print “No input available!\n”;
}
如果想声明自己的undef 值,可以使用undef:
$madonna = undef ; #同$madonna 从未被初始化一样。
2.1.2 练习 1.[5]写一个程序,计算半径为12.5 的圆的周长。圆周长等于2PI?(PI?约为3.1415926)乘以半径。答案为78.5
#!/usr/bin/perl -w
$pi=3.1415926;
$circ=2*$pi*12.5;
print "The circumference of a circle of radius 12.5 is $circ.\n"
2. [4]修改上述程序,用户可以在程序运行时输入半径。如果,用户输入12.5,则应得到和上题一样的结果。
#!/usr/bin/perl -w
$pi=3.1415926;
print "what is the radius?";
chomp($radius=<STDIN>);
$circ=2*$pi*$radius
print "The circumference of a circle of radius $radius is $circ.\n";
3. [4]修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数
#!usr/bin/perl -w
$pi=3.1415926;
print "what is the radius?";
chomp($radius=<STDIN>);
$circ=2*$pi*$radius;
if($radius<0)
{
$circ=0;
}
print "The circumference of a circle of radius $radius is $circ.\n";
4. [8]写一个程序,用户能输入2 个数字(不在同一行)。输出为这两个数的积
#!usr/bin/perl -w
print "Enter first number:"
chomp($one=<STDIN>);
print "Enter second number:"
chomp($two=<STDIN>);
$result=$one*$two;
print "The result is $result.\n";
5. [8]写一个程序,用户能输入1 个字符串和一个数字(n)(不在同一行)。输出为,n 行这个字符串,1 次1 行(提示,使 用“x”操作符)。例如,如果用户输入的是“fred”和“3”,则输出为:3 行,每一行均为fred。如果输入为“fred”和 “299792”,则输出为299792 行,每一行均为fred。
#!usr/bin/per; -w
print "Enter a string:";
$str=<STDIN>;
print "Enter a number of times:";
chomp($num=<STDIN>);
$result=$str x $num;
print "The result is :\n$result";
WEL测试
认证博客专家
软件测试
性能测试
接口测试
一线的测试工作人员。喜欢专研并应用新的技术,用于提升测试效率。擅长:测试新人培训、测试进阶、接口测试、性能测试、问题定位、自动化、数据测试、渗透测试! 如果对测试感兴趣或者遇到一些难题,可以加我微信:Wel_Test,加时填好备注!
转载请注明原文地址: https://ju.6miu.com/read-1202608.html