如何在ticks中使用以下外部命令代替变量?或类似的东西?
sed -i.bak -e '10,16d;17d' $docname
; (这有效)
即。 sed -i.bak -e '$line_number,$line_end_number;$last_line' $docname
;
答案 0 :(得分:2)
my $result =
qx/sed -i.bak -e "$line_number,${line_end_number}d;${last_line}d" $docname/;
线分割时避免SO上的水平滚动条;否则,它将在一条线上。
或者,因为不清楚是否有任何输出要捕获:
system "sed -i.back '$line_number,${line_end_number}d;${last_line}d' $docname";
或者你可以自己将其分成参数:
system "sed", "-i.back", "$line_number,${line_end_number}d;${last_line}d", "$docname";
这往往更安全,因为shell没有机会干扰对参数的解释。
答案 1 :(得分:0)
@args = ("command", "arg1", "arg2");
system(@args) == 0 or die "system @args failed: $?"
此外,在手册上:
perldoc -f system
答案 2 :(得分:0)
我认为你应该阅读qq用于字符串here。
你可能想要这样的东西:
use strict;
use warnings;
my $line_number = qq|10|;
my $line_end_number = qq|16d|;
my $last_line = qq|17d|;
my $doc_name = qq|somefile.bak|;
my $sed_command = qq|sed -i.bak -e '$line_number,$line_end_number;$last_line' $doc_name;|;
print $sed_command;
qx|$sed_command|;