Thread wie durchsuche ich einen text (26 answers)
Opened by fraggs at 2006-12-08 16:06

fraggs
 2006-12-27 17:31
#72426 #72426
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
EDIT EDIT EDIT :
ist geloest loesung unten
edit edit edit

update: so nun haette ich eine weitere frage zum thema .... immoment mit
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# !perl

use strict;
use warnings;

my $dataxml = 'z:\tla\scripts\emmaparser\index.xml';
my $xmlfile;


open($xmlfile,'<',$dataxml) or die $!;

while(my $line = <$xmlfile>)
{
    if(my ($type, $value1, $value2, $value3)=$line=~m!<\s*coverage\s+type="(block|line)\s*,\s*\%\s*"\s+value="(\d+)\%\s+\(([\d\.]+)/([\d\.]+)\)"\s*/>!s)
    {
          print sprintf("%s   %s xxx ",$value1,$value2,$value3);
          last if $type eq 'line'
      }
}

close ($xmlfile);

funktioniert alles allerdings will ich spaeter die date etwas anders ausgeben. jetzt drucker er sie einfach auf die CLI
doch es sind zwei verschiedene dinge.einmal die lines und auch die block.

wie kann ich dies seperate haben ?
dh. wenn fertig als:
$linepercentage    (immoment einfach $value1)
$blockpercentage  (das selbe wie $value1 allerdings anders da die regex zweimal durchleauft)
$totalline        (hier $value3)
$totalblock      (auch $value3 wird neu erfasst beim zweiten durchlauf)
$totallinefin     ($value2)
$totalblockfin   (auch $value2 wird neu erfasst beim zweiten durchlauf)

ich hoffe meine erklaerung kann man verstehen.

ich denke dies koennte so getan werden wenn man einfach die regex zweimal laufen laesst und einmal die zeile line ausliest und dann nochmal auf die lein block ausliest.

das XML file ist oben im thread !

danke vielmals und noch ein frohens nachtraegliches fest !

edit loesung
selbst geloest mit der regex aenderung danke
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# !perl

use strict;
use warnings;

my $dataxml = 'z:\tla\scripts\emmaparser\index.xml';
my $xmlfile;


open($xmlfile,'<',$dataxml) or die $!;

while(my $line = <$xmlfile>)
{
if(my ($test, $test1, $test2, $test3)=$line=~m!<\s*coverage\s+type="(block)\s*,\s*\%\s*"\s+value="(\d+)\%\s+\(([\d\.]+)/([\d\.]+)\)"\s*/>!s)
{
print sprintf("%s %s %s xxx ",$test1,$test2,$test3);
last if $test eq 'line'
}
if(my ($type, $value1, $value2, $value3)=$line=~m!<\s*coverage\s+type="(line)\s*,\s*\%\s*"\s+value="(\d+)\%\s+\(([\d\.]+)/([\d\.]+)\)"\s*/>!s)
{
print sprintf("%s %s %s xxx ",$value1,$value2,$value3);
last if $type eq 'line'
}
}

close ($xmlfile);
so sieht der code jetz aus und hat alle verschiedenen values seperat !

danke\n\n

<!--EDIT|fraggs|1167233825-->
mmm twix

View full thread wie durchsuche ich einen text