perl 语言请教,刚刚学习perl语言,谢谢!!
1#!/usr/bin/perl-w2open(MYFILE,"testfile.txt")||die"openingtestfile:$!";3@stuff=<MYFI...
1 #!/usr/bin/perl -w
2 open(MYFILE,"testfile.txt") || die "opening testfile:$!";
3 @stuff=<MYFILE>;
4 close(MYFILE);
5 print @stuff;
6 print "\n";
7 print $stuff[0];
8 print "\n";
9 print reverse(@stuff);
10 print "\n";
11 print scalar(@stuff);
12 print "\n";
13 @stuff1=reverse(@stuff);
14 foreach(@stuff1) {
15 print scalar(@stuff1);
16 print "\n";
17 }
18 foreach(reverse(@stuff)) {
19 print scalar(@stuff);
20 print "\n";
21 print scalar(reverse($_));
22 print "\n";
23 print reverse(@stuff);
24 print "\n";
25 print scalar(reverse(@stuff));
26 print "\n";
27 print scalar(@stuff1);
28 print "\n";
29 }
执行结果如下:
> perl testfile.pl
i am the very model of a modern major-general.
i am the very model of a modern major-general.
i am the very model of a modern major-general.
1
i am the very model of a modern major-general.
1
.lareneg-rojam nredom a fo ledom yrev eht ma i
i am the very model of a modern major-general.
.lareneg-rojam nredom a fo ledom yrev eht ma i
1
testfile.txt的文件内容是i am the very model of a modern major-general.
@stuff的值是i am the very model of a modern major-general.这个数组只有一个元素,就是这句话.
从第七行打印可以看出来,只有一个元素.
第九行的输出是倒序这个数组,因为只有一个元素,所以还是打印这句话.
第十一行,scalar这个函数是计算数组的元素个数.所以输出为1
foreach这个函数就是输出每一个元素的值,为何到了第二十一行和25行却输出结果中的倒序.是每个字母的倒序.
其中 @stuff1=reverse(@stuff);
14 foreach(@stuff1) {
15 print scalar(@stuff1);
16 print "\n";
17 }
和foreach(reverse(@stuff)) {
21 print scalar(reverse($_));
22 print "\n";
24 print "\n";
25 print scalar(reverse(@stuff));
这两段代码不一样吗?输出结果怎么一个是元素个数,一个却是数组中的每一个字母.
还有我发现scalar(localtime)这个也是输出内容,是时间,什么情况下输出个数,什么情况下输出内容,莫非是括号里面的是函数的就输出内容吗?
刚刚开始学习perl语言,还请高手多多指教啊!谢谢!! 展开
2 open(MYFILE,"testfile.txt") || die "opening testfile:$!";
3 @stuff=<MYFILE>;
4 close(MYFILE);
5 print @stuff;
6 print "\n";
7 print $stuff[0];
8 print "\n";
9 print reverse(@stuff);
10 print "\n";
11 print scalar(@stuff);
12 print "\n";
13 @stuff1=reverse(@stuff);
14 foreach(@stuff1) {
15 print scalar(@stuff1);
16 print "\n";
17 }
18 foreach(reverse(@stuff)) {
19 print scalar(@stuff);
20 print "\n";
21 print scalar(reverse($_));
22 print "\n";
23 print reverse(@stuff);
24 print "\n";
25 print scalar(reverse(@stuff));
26 print "\n";
27 print scalar(@stuff1);
28 print "\n";
29 }
执行结果如下:
> perl testfile.pl
i am the very model of a modern major-general.
i am the very model of a modern major-general.
i am the very model of a modern major-general.
1
i am the very model of a modern major-general.
1
.lareneg-rojam nredom a fo ledom yrev eht ma i
i am the very model of a modern major-general.
.lareneg-rojam nredom a fo ledom yrev eht ma i
1
testfile.txt的文件内容是i am the very model of a modern major-general.
@stuff的值是i am the very model of a modern major-general.这个数组只有一个元素,就是这句话.
从第七行打印可以看出来,只有一个元素.
第九行的输出是倒序这个数组,因为只有一个元素,所以还是打印这句话.
第十一行,scalar这个函数是计算数组的元素个数.所以输出为1
foreach这个函数就是输出每一个元素的值,为何到了第二十一行和25行却输出结果中的倒序.是每个字母的倒序.
其中 @stuff1=reverse(@stuff);
14 foreach(@stuff1) {
15 print scalar(@stuff1);
16 print "\n";
17 }
和foreach(reverse(@stuff)) {
21 print scalar(reverse($_));
22 print "\n";
24 print "\n";
25 print scalar(reverse(@stuff));
这两段代码不一样吗?输出结果怎么一个是元素个数,一个却是数组中的每一个字母.
还有我发现scalar(localtime)这个也是输出内容,是时间,什么情况下输出个数,什么情况下输出内容,莫非是括号里面的是函数的就输出内容吗?
刚刚开始学习perl语言,还请高手多多指教啊!谢谢!! 展开
展开全部
首先,perldoc里对reverse的解释:In list context, returns a list value consisting of the elements of LIST in the opposite order. In scalar context, concatenates the elements of LIST and returns a string value with all characters in the opposite order.
大概意思就是,如果是reverse(LIST)那么结果就是返回一个LIST的倒序数组。但如果reverse(LIST)在一个scalar上下文中,则返回的是所有字符的倒序组成的字符串。
这样也就不难解释:
15 print scalar(@stuff1); 的结果是正序
21 print scalar(reverse($_)); 的结果是倒序了。
初学的话,不懂多查查perldoc。
网址: http://perldoc.perl.org/
大概意思就是,如果是reverse(LIST)那么结果就是返回一个LIST的倒序数组。但如果reverse(LIST)在一个scalar上下文中,则返回的是所有字符的倒序组成的字符串。
这样也就不难解释:
15 print scalar(@stuff1); 的结果是正序
21 print scalar(reverse($_)); 的结果是倒序了。
初学的话,不懂多查查perldoc。
网址: http://perldoc.perl.org/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询