由于Perl是弱类型语言,所以很多变量是在需要的时候才构建的,特别是字符串的连接
小师弟遇到一个问题:
$tmp=`ps .....`;#获取PID
$tmp ~= /.../; #截取出PID
$kill_str = "kill -9 ".$tmp;
·kill_str·; #如果$tmp赋了固定值,则能通过;;;如果用ps获取出动态的PID值则无法通过,出现的症状很奇怪,无输出,,但是打印输出很正常,僵死
后来经过分析是在执行kill -9 $PID的时候构造字符串时变量和常量的时机是不同的,所以当$PID是变量时,执行的串根本就不是构造正确的字符串;而$PID是常量时执行的就是构造正确的串,
这个问题可以通过
sprintf函数来解决