加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何从Perl中的XML文件中提取和保存值?

发布时间:2020-12-16 06:20:17 所属栏目:大数据 来源:网络整理
导读:这是我在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}}
这是我在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}}
         ....
         ....
         ....
      }
}

???

问题是我使用Perl只是因为我正在读取XML文件,但我需要通过shell脚本获取这些变量.所以,这是我正在使用的:

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

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

> Config File是一种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=$vn";
}

config.xml中

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读