1

XMLファイルがあります。ファイルに空白行があります。空白行だけを削除するにはどうすればよいですか? メソッドを試しchomp()てみたところ、すべての改行記号が削除されることがわかりました。標準の XML ファイル形式を出力する必要があります。

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>
4

3 に答える 3

8

あなたのループでは、印刷の前に:

next unless $line =~ /\S/;
于 2010-12-29T06:54:00.010 に答える
3

スペース以外の文字が含まれている場合にのみ、行を印刷できます。

while(my $line = <DATA>) {
        print $line if ($line=~/\S/);
}
于 2010-12-29T06:56:08.177 に答える
2

正直なところ、これを行うことはお勧めしませんchomp。代わりに、パーサーを使用して XML を解析して再フォーマットするだけです。

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

これにより、XML が読み取られ、検証され、出力が再フォーマットされます。

于 2015-06-29T09:57:40.927 に答える