Perl脚本打印$*报“$* is no longer supported”错误求助
解决Perl中输出$*时的致命错误问题
问题原因
你在双引号包裹的字符串里写了$*,Perl会将其识别为已废弃的特殊变量(Perl 5.10及以后版本完全移除了对$*的支持,直接使用会触发致命错误),但你的需求只是输出$*这两个字符,而非调用这个废弃变量。
解决方法
以下几种方式都能让你正常输出$*:
- 反斜杠转义$符号
在双引号中,给$加反斜杠,让Perl把它当作普通字符处理,保留*原样:
print OUT4 "\texec su -c $0 \$*\n\techo \"exec failed!\";
- 混合单双引号拼接
把需要原样输出的$*用单引号包裹(单引号内的内容不会被Perl解析),同时保留$0的变量解析:
print OUT4 "\texec su -c $0 '$*'\n\techo \"exec failed!\";
或者拆分字符串拼接:
print OUT4 "\texec su -c $0 ", '$*', "\n\techo \"exec failed!\";
- 使用qq自定义分隔符(可选)
如果字符串里引号太多,也可以用qq运算符自定义分隔符,同时转义$:
print OUT4 qq{\texec su -c $0 \$*\n\techo "exec failed!";}
内容的提问来源于stack exchange,提问作者Eric Eberhard
相关产品推荐
相关产品推荐

