Как посчитать, сколько раз строка (тег XML) встречается в строке? - PullRequest
1 голос
/ 14 апреля 2011

Допустим, мой XML-файл содержит несколько тегов <Timestamp> в одной строке.Я читаю документ построчно.Как я могу посчитать, сколько из этих тегов есть в каждой строке?Я хочу что-то вроде:

foreach "<Timestamp>" in $line {
  print "FOund";
}

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 14 апреля 2011
while ($line =~ /<Timestamp>/g) {
    print "Found\n";
}

должен сделать свое дело. Модификатор /g важен там. См. Использование регулярных выражений в Perl в perlretut, оно имеет отношение к глобальному сопоставлению.

1 голос
/ 14 апреля 2011

Это XML, useXML::Twig:

my $twig = XML::Twig->new( twig_roots => { Timestamp => 1 });
$twig->parsefile( $xml_file_path );
my $timestamp_count = ( my @a = $twig->root->children( 'Timestamp' ));
0 голосов
/ 14 апреля 2011

Оператор управления redo возобновляет выполнение текущего блока операторов. Вы можете использовать это, чтобы написать что-то вроде:

foreach $line (<>)
{
  $tag = $line =~ m/(<.*>)/;
  push @tags, $tag;
  if( $tag ) redo;
}

Предупреждаю, я не запускал это.

Надеюсь, это поможет.

...