2010-12-29 18 views
1

Ich habe eine XML-Datei. In der Datei ist eine Leerzeile vorhanden. Wie kann ich nur die Leerzeilen entfernen? Ich versuchte chomp() Methode und fand, dass es alle neuen Liniensymbole entfernt. Ich muss immer noch das Standard-XML-Dateiformat ausgeben.chomp() Verwendung in Perl

while(my $line = <$fh>) { 

     #chomp($line); 
     #$line =~ s/\s+//g; 
     print $line; 
} 

__DATA__ 
    <item> 

     <key>AB</key> 

     <info> 

     <format>10</format> 

     <description>Any binary string</description> 

     <value>NA</value> 

     <whereUsed>A2B25,A2B26</whereUsed> 

     </info> 

    </item> 

Das Ausgabeformular unten erwartet.

<item> 
    <key>AB</key> 
    <info> 
    <format>10</format> 
    <description>Any binary string</description> 
    <value>NA</value> 
    <whereUsed>A2B25,A2B26</whereUsed> 
    </info> 
</item> 

Antwort

8

In der Schleife vor dem Druck:

next unless $line =~ /\S/; 
+0

Es funktioniert ganz gut. Vielen Dank. –

3

Sie die Zeile nur drucken können, wenn sie einen nicht-Raum Charakter hat:

while(my $line = <DATA>) { 
     print $line if ($line=~/\S/); 
} 
+1

Ich bin ein großer Fan von '$ _' in diesem Fall. –

2

Ich würde ehrlich gesagt nicht empfehlen Tun Sie dies mit chomp und stattdessen einfach parsen und formatieren Sie Ihre XML mit einem Parser.

Dies liest, validiert Ihre XML und formatiert die Ausgabe neu.