Использование chomp () в Perl - PullRequest
       7

Использование chomp () в Perl

1 голос
/ 29 декабря 2010

У меня есть файл 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>

Ответы [ 3 ]

8 голосов
/ 29 декабря 2010

В вашем цикле, перед печатью:

next unless $line =~ /\S/;
3 голосов
/ 29 декабря 2010

Вы можете напечатать строку, только если она имеет символ без пробелов:

while(my $line = <DATA>) {
        print $line if ($line=~/\S/);
}
2 голосов
/ 29 июня 2015

Честно говоря, я бы не советовал делать это с chomp, а вместо этого просто анализировать и переформатировать ваш XML с помощью парсера.

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

Это читает, проверяет ваш XML и переформатирует вывод.

...