本文和大家重点讨论一下Perl print用法中遇到的两个问题,使用Perl print的不同的写法时会出现一些不同的问题,这里和大家分享一下,相信通过本文的学习你对Perl print的概念一定会有初步的认识。
使用Perl print命令时遇到的问题
使用Perl print的不同的写法时会出现一些不同的问题:
1.打印数组:
可能你会习惯这样写:
@array1=(“body”,”head”,”tail”);
print@array1;
那么回输出:bodyheadtail
如果这样写:print“array1”;
会输出:bodyheadtail
中间会有空格出现,Perl会把””之间的数组先插入一些符号后然后变成字符串输出。
如果你的数组元素当中有以换行符结尾:
参考下列代码:
@array2=(“head\n”,”body\n”,”tail\n”);
Print“array2”;
运行的结果当中除了第一行,后面的bodytail都会有一个空格的缩进,所以如果你的数组元素当中包含有换行符,那么在你用print“@array”的时候,你就要注意输出的问题了。
2.带()的print和不带()的Perl print
Print(“hello”);
Print“hello”;
以上两个语句会有同样的输出,似乎没有什么区别,其实是有的
第一个加了()的Perl print会被看待为一个函数。第二个则被看成是一个运算式
在执行数值运算的时候您会看到有区别:
下面的打印您觉得会输出什么?
Print(2+4)*5;
结果是:6,why???????不应该是30么,如果你不相信你可以运行以下:
这是不是Perl出了问题?绝对不是,其实如果你对print输出加上
()的话,Perl就会把它当作是一个函数,然后运算这个函数,得到结果后
与后面的值运算,应为Perl print如果打印成功就会返回1,所以上面运算完之后
得出5。
如果你想正确的打印输出,那么比这样写:
Print5*(2+4);
或者:
Print((2+4)*5);
D:\>Perl-e"print(2+4)*5"
6
D:\>Perl-e"print5*(2+4)"
30
D:\>Perl-e"print((2+4)*5)"
30
【编辑推荐】