Так у меня есть этот код в Perl, который анализирует XML-и я хочу, файл на языке Perl, чтобы распечатать в текстовый файл, так что все в колонках, как так:Удаление Пробелы в Perl при печати в текстовый файл
SpectrumIndex TotalIonCount Duration Spectrum
Integer Float Float mass,abundance;mass1,abundance1;mass 2,abundance1
Вот код 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;mass6,abundance6</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
#!/usr/bin/perl-w
#example to write to text
my $file = "gapiformat.txt";
unless(open FILE, '>'.$file) {
die "\nUnable to create $file\n";
}
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $values= XMLin('samplegapi.xml',ForceArray => ['scan-result','result-file-header']);
my $results = $values->{'cmd'}->{'scan-results'}->{'scan-result'};
my $results1= $values->{'cmd'}->{'result-file-header'};
printf FILE ("%-s %-s %-s %s\n","SpectrumIndex","TotalIonCount","Spectrum","Duration");
for my $data (@$results) {
my $spectrum=$data->{spectrum};
for my $data1 (@$results1){
printf FILE ("%-s %-s %-s %-s\n",$data->{"spectrum-index"}, $data->{tic}, $spectrum
->{'content'},$data1->{duration});
}
}
это дает следующий вывод в текстовый файл:
SpectrumIndex TotalIonCount Spectrum Duration
Integer Float mass,abundance;mass1,abundance1;
mass2,abundance2;mass6,abundance6 Float
Integer Float mass3,abundance3;mass4,abundance4;
mass5,abundance5 Float
Любая помощь приветствуется!
Я на самом деле просто пытается выяснить, как получить данные спектра быть по отдельным линиям –
"\ n". Например, «% -s \ n% -s \ n% -s \ n». Строка формата для printf() является обычной строкой, за исключением замены специальных кодов%. – 7stud
Почему бы вам не опубликовать образец вашего XML-файла и нужный результат с некоторыми фактическими числами? Кстати, желаемый вывод, который вы опубликовали, не имеет никакого смысла. Я не знаю, будет ли это неправильно отображаться программным обеспечением форума или что. Вы исправили свой пост? – 7stud