XML-6ren">
gpt4 book ai didi

xml - 如何在 Perl 中从 XML 文件中提取和保存值?

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:38 25 4
gpt4 key购买 nike

这是我在 Perl 脚本中尝试做的事情:

$data="";sub loadXMLConfig(){     $filename="somexml.xml"     $data = $xml->XMLin($filename);}sub GetVariable(){     ($FriendlyName) = @_;     switch($FriendlyName)     {         case "My Friendly Name" {print $data->{my_xml_tag_name}}         ....         ....         ....      }}

The problem is I am using Perl just because I am reading from an XML file, but I need to get these variables by a shell script. So, here is what I am using:

$ perl -e 'require "scrpt.pl"; loadConfigFile(); GetVariable("My Variable")' 

这完全符合预期,但我每次获取变量时都需要读取 XML 文件。有没有一种方法可以跨 shell 调用“保留”$data?这个想法是我只读了一次 XML 文件。如果不是,是否有更简单的方法可以做到这一点?这些是我无法改变的:

  • 配置文件是一个 XML
  • 需要shell脚本中的变量

最佳答案

当我需要一些信息时,通过 Perl 在 shell 脚本中检索,我通过 Perl 生成 shell 脚本并通过 eval 设置环境变量:

myscript

#!/bin/bash
BINDIR=`dirname $0`
CONFIG=$BINDIR/config.xml
eval `$BINDIR/readcfg $CONFIG`
echo Running on the $planet near the $star.

readcfg

#!/usr/bin/perl
use XML::Simple;
my $xml = XMLin('config.xml', VarAttr => 'name', ContentKey => '-content');
while (my ($k, $v) = each %{$xml->{param}}) {
$v =~ s/'/'"'"'/g;
$v = "'$v'";
print "export $k=$v\n";
}

config.xml

<config>
<param name="star">Sun</param>
<param name="planet">Earth</param>
</config>

关于xml - 如何在 Perl 中从 XML 文件中提取和保存值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com