小编ver*_*dra的帖子

如何访问XML :: Simple返回的数据结构中的值?

大家好,
这对于perl程序员来说非常简单,但不是像我这样的初学者,
我有一个xml文件,我使用XML :: Simple这样处理

my $file="service.xml";
my $xml = new XML::Simple;
 my $data = $xml->XMLin("$file", ForceArray =>  ['Service','SystemReaction',  
                                      'Customers', 'Suppliers','SW','HW'],);
Run Code Online (Sandbox Code Playgroud)

倾销$data,它看起来像这样:

$data = {
   'Service' => [{
         'Suppliers' => [{
               'SW' => [
                  {'Path' => '/work/service.xml',  'Service' => 'b7a'},
                  {'Path' => '/work/service1.xml', 'Service' => 'b7b'},
                  {'Path' => '/work/service2.xml', 'Service' => 'b5'}]}
         ],
         'Id' => 'SKRM',
         'Customers' =>
            [{'SW' => [{'Path' => '/work/service.xml', 'Service' => 'ASOC'}]}],
         'Des'  => 'Control the current through the pipe',
         'Name' => ' Control …
Run Code Online (Sandbox Code Playgroud)

perl reference data-structures

3
推荐指数
1
解决办法
109
查看次数

将char变量转换为unsigned int

我试图将char变量转换为Unsigned int.我的代码是

char spi(char data) 
{ 
    //Start transmision 
    SPDR = data; 
    //Wait for transmision complete 
    while(!(SPSR & 0x80)); 
    return SPDR; 
} 

unsigned int ReadAd(void) 
{ 
    unsigned int data; 

    ChipSelectAd(1); 
    //Read data 
    CheckStatus();                                            
    spi(0x58);                                                
    data = (spi(0xFF)<< 8);    
    data |= spi(0xFF);         

    return data; 
} 
Run Code Online (Sandbox Code Playgroud)

实际上我的问题是spi函数返回一个8位字符,所以上面的代码将char变量左移8bits然后将它分配给一个16位变量,结果总是为0.为了实际将数据移到左边我需要首先将它们转换为16位类型的变量.我试过这样的

char spi(char data) 
{ 
    //Start transmision 
    SPDR = data; 
    //Wait for transmision complete 
    while(!(SPSR & 0x80)); 
    return SPDR; 
} 

unsigned int ReadAd(void) 
{ 
    unsigned int data; 

    ChipSelectAd(1); 
    //Read data 
    CheckStatus();                                            
    spi(0x58);                                                
    data = (unsigned int)((unsigned char)spi(0xFF)<< …
Run Code Online (Sandbox Code Playgroud)

c embedded avr

2
推荐指数
1
解决办法
1121
查看次数

如何使用perl将xml路径包含到哈希中

我在目录中有一些xml文件,因此我在该目录中搜索所需的xml文件,并使用下面的脚本将xml数据存储在哈希数据结构中.但我的问题是我需要在散列中保存每个xml文件的文件路径但是任何人都可以帮我如何在散列数据中保存文件路径我写的脚本就像这样

#!/usr/bin/perl
use warnings;
use strict;
use XML::Simple;
use Carp;
 use File::Find;
use File::Spec::Functions qw( canonpath );  
use Data::Dumper;

my @ARGV ="C:/Main/work"; die "Need directories\n" unless @ARGV;
 find(
 sub {
    return unless ( /(_service\.xml)$/ and -f );
    Hash_information();
    return;
},
@ARGV
);

sub Hash_information {
my $path= $_;

my $xml = new XML::Simple;
my $data = $xml->XMLin("$path", ForceArray => [  
'Service','SystemReaction','SW','HW','Component' , 'BM'],
                             KeyAttr=>{Service=>'Id'}  );
   print Dumper ($data);
 return;
  }
Run Code Online (Sandbox Code Playgroud)

使用上面的脚本我得到所有服务xml文件表单文件夹并使用XML :: Simple存储在哈希数据结构中.现在我想在散列数据结构中保存每个xml文件的文件路径.谁能帮我.
提前致谢

xml perl

1
推荐指数
1
解决办法
256
查看次数

标签 统计

perl ×2

avr ×1

c ×1

data-structures ×1

embedded ×1

reference ×1

xml ×1