关于perl中变量内插问题的讨论

当在字符串(双引号)中出现变量时,变量的值会内插于字符串中。
这里有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,休闲)