1

そこで、Perl を使用して次の XML コードを解析し、スペクトルの結果を呼び出そうとしていますが、ハッシュであるため問題が発生しています。偶数サイズのリストが期待される場所でエラーメッセージの参照が見つかりました。

<message>
  <cmd id="result_data">
    <result-file-header>
      <path>String</path>
      <duration>Float</duration>
      <spectra-count>Integer</spectra-count>
    </result-file-header>
    <scan-results count="Integer">
      <scan-result>
        <spectrum-index>Integer</spectrum-index>
        <time-stamp>Integer</time-stamp>
        <tic>Float</tic>
        <start-mass>Float</start-mass>
        <stop-mass>Float</stop-mass>
        <spectrum count="Integer">mass,abundance;mass1,abundance1;
          mass2,abundance2</spectrum>
      </scan-result>
      <scan-result>
        <spectrum-index>Integer</spectrum-index>
        <time-stamp>Integer</time-stamp>
        <tic>Float</tic>
        <start-mass>Float</start-mass>
        <stop-mass>Float</stop-mass>
        <spectrum count="Integer">mass3,abundance3;mass4,abundance4;
          mass5,abundance5</spectrum>
      </scan-result>
    </scan-results>
  </cmd>
</message>

私が使用しているPerlコードは次のとおりです。

my $file = "gapiparseddataexample1.txt";
unless(open FILE, '>'.$file) {
die "\nUnable to create $file\n";
}

use warnings;
use XML::Simple;
use Data::Dumper;
my $values= XMLin('samplegapi.xml', ForceArray => [ 'scan-result' ,'result-file-header']);
print Dumper($values);

my $results = $values->{'cmd'}->{'scan-results'}->{'scan-result'};
my $results1=$values->{'cmd'}->{'result-file-header'};

for my $data (@$results) {
 print FILE "Spectrum Index",":",$data->{"spectrum-index"},"\n";
 print FILE "Total Ion Count",":",$data->{tic},"\n";
 %spectrum=$data->{spectrum};

print FILE "Spectrum",":",%spectrum, "\n";
    for my $data1 (@$results1) {
        print FILE "Duration",":",$data1->{duration},"\n";
 }
}

スペクトル値のペアを印刷できるようにしたいと考えています。

4

1 に答える 1