Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML标记存储到shell中的Perl变量_Xml_Perl_Shell_Awk - Fatal编程技术网

将XML标记存储到shell中的Perl变量

将XML标记存储到shell中的Perl变量,xml,perl,shell,awk,Xml,Perl,Shell,Awk,我正在运行awk命令,以便从文件中提取XML标记,它在我的控制台中成功运行,并打印输出所需的标记 awk '/<tag name="some_name">/,/<\/tag>/' file 现在我需要在Perl脚本中调用这个命令,并将控制台中的输出传递给这个变量,以便用Perl操作这个结构 我试过了 my $var=`awk '/<tag name="some_name">/,/<\/tag>/' file` 但这不起作用,我有这个错误 awk

我正在运行awk命令,以便从文件中提取XML标记,它在我的控制台中成功运行,并打印输出所需的标记

awk '/<tag name="some_name">/,/<\/tag>/' file
现在我需要在Perl脚本中调用这个命令,并将控制台中的输出传递给这个变量,以便用Perl操作这个结构

我试过了

my $var=`awk '/<tag name="some_name">/,/<\/tag>/' file`
但这不起作用,我有这个错误

awk: cmd. line:1: /<tag name="some_name">/,/</tag>/
awk: cmd. line:1:                                                 ^ unexpected newline or end of string
如何修改此变量赋值,甚至使用其他方法来解决问题。
我对所有的命题都持开放态度,甚至一开始不使用awk,只使用Perl。

引用有点棘手。我为命令本身使用了q操作符see perldoc perlop,为了清晰起见,我去掉了等效的backtick

my $cmd = q(awk '/<tag name="some_name">/,/<\/tag>/' file);
my $var = qx($cmd);

我建议改用XML解析器,例如。

引用有点棘手。我为命令本身使用了q操作符see perldoc perlop,为了清晰起见,我去掉了等效的backtick

my $cmd = q(awk '/<tag name="some_name">/,/<\/tag>/' file);
my $var = qx($cmd);

我建议改用XML解析器,例如。

我稍后会编辑它,因为我不在运行Perl的系统上,但类似的东西可以避免使用awk

open FILE, "file" or die "Couldn't open file: $!";
$slurp = <FILE>;
if ($slurp =~ /<tag name="some_name">(.*)<\/tag>/) {
    $var = $1;
}

我稍后会编辑这个,因为我不是在一个运行Perl的系统上,但是类似的东西可以避免使用awk

open FILE, "file" or die "Couldn't open file: $!";
$slurp = <FILE>;
if ($slurp =~ /<tag name="some_name">(.*)<\/tag>/) {
    $var = $1;
}

我建议改用实际的xml解析器,比如或


我建议改用实际的xml解析器,比如或


嗯,既然awk命令本身也能做得很好,为什么还要从Perl内部调用它呢?事实上,甚至还有一个2便士的AwkPerl@vogomatix我知道awk只需一个命令就可以做到这一点,所以我选择了awk,如果可以在perl中使用这个命令,那就更好了,我如何使用a2p来实现这一点呢?嗯,既然awk命令本身也可以做到,为什么还要在perl中调用它呢?事实上,甚至还有一个2便士的AwkPerl@vogomatix我知道awk只需一个命令就可以做到这一点,所以我选择了awk,如果可以在perl中使用此命令,它会更好,我如何使用a2p来实现这一点?比其他答案(包括我自己的答案)更稳健的解决方案:-比其他答案(包括我自己的答案)更稳健的解决方案:-