perl自学3_

来源:互联网 发布:网络教育有档案吗 编辑:程序博客网 时间:2024/06/08 16:03

一《perl语言入门》第二章之前看过,太久了,以后再回过头做笔记吧。


二 第三章 列表与数组

1什么样的是数组,什么样的是列表(自己总结):

数组:$fred[0]="aaaa"; 

列表:(1,2,3)

有一个叫$fred的数组,同样也可以有一个叫$fred的标量,两者是完全不同的东西。所以print $fred不等于print $fred[0] 当然实际应用中最好不要使数组和标量的名称重复


2 数组长度没有上限。事先也不需要对数组的长度进行规定。当对索引值超过数组尾端的元素进行赋值,数据将自动扩大。

$fred[0]="aaa";

$fred[99]="ddd";#现在有98个undef元素


3 数组最后一个元素的索引值:$#name name为数组名称。但并不常用,而是使用负数索引值-1来取到最后一个元素

$fred[$#fred]

$fred[-1]

二者等价。


4 (1,2,3)三个元素的列表

(1..100)100个整数的列表

(1.4..100.5)100个整数的列表。


5 qw简写:在perl程序中经常需要建立简单的单词列表,使用qw可以简化输入:

("aaaa","bbbb")等价于qw(aaaa bbbb)

等价于

qw(

aaaa

bbbb

)

等价于

qw!aaaa bbbb!即可以不用括号进行分隔。如果是左右对称的成对符号,那么也要使用左右对称的成对符号:qw<aaaa bbbb>

列表中出现定界符(!<>等),用\转义



总结到57页


2015.4.18

第二章习题:

1 计算半径为12.5的圆周长。

 自己的答案:

$r=12.5;
$s=2 * 12.5 * 3.141592654;
print $s;

我以为无法出现正常的结果,小数会被默认为浮点数。但是结果正确。

查找书,“perl内部不存在整数值——程序中用到的整形常量会被转换成等效的浮点数值。”


2 修改上题,提示用户键盘输入半径长度

题目本身不重要。重要的是学习到一个新东西:use static

因为它,我报了Global symbol "" requires explicit package name at ""错误。原因是没有在变量声明前加my 

黏贴自别处:

为什么要用 use strict?

众多的原因之最重要的原因是帮你寻找因为错误拼写造成的错误。

因为你会发现使用 use strict 之后,我们就不必花太多的时间自己去查找 use strict 可以找到的很多简单错误。

比如错误使用了'$recieve_date' 变量,但实际上你在程序中已声明的是 '$receive_date' 变量,这个错误就很难发现。同样,use strict 迫使你把变量的范围缩到最小,使你不必担心同名变量在程序的其它部份发生不良作用。(尽管这是 my 的功能,但是如果你使用 use strict 的话,它会强迫你用 my 声明变量,来达到上述目的)。

(地址:http://www.cnblogs.com/zeushuang/archive/2012/08/21/2649325.html)


3 、4题做了。略过不记录 注意获取用户输入要用chomp。


5 提示用户输入一个字符串一个数字,以数字为重复次数,连续输出字符串。如输入fred与3,则输出三行fred

自己做的:

chomp($word=<STDIN>);
chomp($time=<STDIN>);
#$result=
while ($time > 0) {
print "$word\n";
$time-=1;
}

可以完成功能,但没有使用x操作符。

x操作符为字符串重复操作符,是一个小写字母x,将左边的操作数(要重复的字符串)与其本身连接,重复次数由右边的操作数(某个数字)指定

因此书中本题的答案:

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";

(只抄下来,没有进行测试)

str没有用chomp处理,是为了利用<STDIN>自带的换行符达到每行输出一遍字符串的目的(如果去掉其本身的换行符,x操作符运算后得到的结果会连成一行)。最后一行result前的\n是为了让输出更美观






0 0
原创粉丝点击