2010-12-29 7 views
1

私はXMLファイルを持っています。ファイルには空白行があります。空白行だけを削除するにはどうすればよいですか?私はchomp()メソッドを試して、それが新しい行のシンボルをすべて削除することを発見しました。私はまだ標準のXMLファイル形式を出力する必要があります。Perlでのchomp()の使用

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> 

以下の出力フォームが必要です。印刷前に

あなたのループでは
<item> 
    <key>AB</key> 
    <info> 
    <format>10</format> 
    <description>Any binary string</description> 
    <value>NA</value> 
    <whereUsed>A2B25,A2B26</whereUsed> 
    </info> 
</item> 

答えて

8

、:

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

非常にうまく動作します。ありがとうございました。 –

3

あなたはそれが非空白文字がある場合にのみ行を印刷することができますchompでこれを行い、代わりにパーサーを使用してXMLを解析して再フォーマットするだけです。

use XML::Twig; 
XML::Twig->new('pretty_print' => 'indented_a')->parse(\*DATA)->print; 

これは、XMLを検証し、出力を再フォーマットします。

+1

私はこの場合に '$ _'を使用することを熱狂しています。 –

2

私は正直お勧めしません:

next unless $line =~ /\S/; 
関連する問題