关于perl中变量内插问题的讨论
原创
©著作权归作者所有:来自51CTO博客作者时代码农的原创作品,请联系作者获取转载授权,否则将追究法律责任
当在字符串(双引号)中出现变量时,变量的值会内插于字符串中。
这里有3种情况需要讨论一下:
1,变量是标量变量肯定没有问题,比如:$y="string";print "abc$string\n",自然,打印结果为abcstring并换行。
那么如果变量是数组呢,比如:@array=qw(red green blue); print "colors:@array\n";
那么打印结果是colors:red green blue并换行。可见,数组照样内插于字符串中。
2,如果变量的值是数字,那么先将数字转换为字符串,再进行内插。
比如:$y=32;print "there are $y people on the ship";
打印结果为there are 32 people on the ship
如果变量的值是一个表达式,那么先对表达式进行求值,再内插。
比如:$y=12+45;print "there are $y people on the ship";
打印结果为there are 57 people on the ship
3,如果变量不是直接位于字符串内,比如:
@array=qw(killo jesson);
print "the result is $array[$y-1];
(1)$y=2*4;
打印结果为:the result is
因为$y的内存地址中存放的内容实际是8,那么$array[$y-1]相当于$array[7],打印结果为空。
(2)$y="2*4"
打印结果为:the result is jesson
因为$y实际存放内容为字符串2*4,$y-1这个索引表达式先进行计算,操作符为减号,这要求操作数都是数值型,所以字符串2*4转换为数值型为数值2。$y-1得到的结果为1,所以$array[$y-1]相当于$array[1],打印结果为jesson。
(3)$y="0"
打印结果为:the result is
因为$y的内容为字符串0,$array[$y]的索引值为字符串0,而数组的索引值都是数值型,所以$array[$y]打印为空。
上一篇:perl学习笔记
下一篇:perl中的foreach结构
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
perl的内置特殊变量
perl的内置特殊变量
perl的内置特殊变量