我试图在Perl脚本的顶部分配一个常量,如下所示:
use constant {
# ...
CONSTNAME => qx{readlink -e __FILE__} || __FILE__,
# ...
};
Run Code Online (Sandbox Code Playgroud)
__FILE__不会在qx运算符内插入,这会导致失败.我怎样才能实现我想要的,即__FILE__ 在调用readlinkshell 之前插入.
请注意:不能将命令存储在中间变量中.
要直接回答这个问题,你可以使用perlref中描述的interpolate-arbitrary-expression-in-string习惯用法:
print qx{echo @{[ __FILE__ ]}};
Run Code Online (Sandbox Code Playgroud)
评论中提出了几个警告:
[]设备列表环境.这在这里无关紧要,但总的来说值得注意.__FILE__有shell元字符,你可能会遇到麻烦.如果您的目标是找到解析了所有符号链接的perl脚本的路径,您可能需要查看该FindBin模块.FindBin已经成为核心perl发行版的一部分已有一段时间了(至少从5.004开始,根据http://search.cpan.org/~chips/perl5.004/).