in reply to Help in manipulating values from two arrays
How many times do we have to tell the children? Do not hand roll code to parse HTML/XML, life just ain't long enough for that to be worth while - even as an exercise.
Use HTML::TreeBuilder for HTML or XML::Twig for XML. In this case it looks like XML so lets wrap a root element around the sample data provided and see what we can do:
use strict; use warnings; use XML::Twig; my $xml = <<XML; <root>
<act>Key</act><emp>3384</emp><job>78082</job><chap>6</chap><pg>20</pg> +<time>0.7</time><prod>114.285714285714</prod> <act>Reconcile</act><emp>3017</emp><job>78062</job><chap>2-7</chap><pg +>0</pg><time>1.4</time><prod>Insufficient Information</prod> <act>Training</act><emp>3384</emp><job>77654</job><chap>-</chap><pg>0< +/pg><time>5.1</time><prod>Non-Billable</prod> <act>Management</act><emp>3017</emp><job>77893</job><chap>-</chap><pg> +0</pg><time>4.4</time><prod>Non-Billable</prod> <act>Break</act><emp>3379</emp><job>33843</job><chap>-</chap><pg>0</pg +><time>0.2</time><prod>Non-Billable</prod> <act>Excess overload</act><emp>3379</emp><job>77570</job><chap>14</cha +p><pg>1</pg><time>0.5</time><prod>6.66666666666667</prod> <act>Management</act><emp>3123</emp><job>88898</job><chap>-</chap><pg> +0</pg><time>0.5</time><prod>Non-Billable</prod> <act>Management</act><emp>3123</emp><job>22304</job><chap>-</chap><pg> +0</pg><time>0.3</time><prod>Insufficient Information</prod> <act>Management</act><emp>3123</emp><job>11121</job><chap>-</chap><pg> +0</pg><time>1.4</time><prod>Non-Billable</prod> <act>Adapt</act><emp>3123</emp><job>78143</job><chap>08-</chap><pg>0</ +pg><time>0.3</time><prod>Insufficient Information</prod> <act>Import</act><emp>3417</emp><job>76584</job><chap>App K</chap><pg> +4</pg><time>1.0</time><prod>11.4285714285714</prod> <act>Break</act><emp>3123</emp><job>22732</job><chap>-</chap><pg>0</pg +><time>0.4</time><prod>50.65687</prod> <act>key</act><emp>3123</emp><job>78143</job><chap>08</chap><pg>0</pg> +<time>3.3</time><prod>45.5544</prod> <act>Supervision</act><emp>3192</emp><job>54281</job><chap>-</chap><pg +>0</pg><time>4.0</time><prod>Non-Billable</prod>
</root> XML my $t= XML::Twig->new (twig_roots => {emp => \&emp, prod => \&prod}); my %emp; my $currEmp; $t->parse ($xml); print "$_ - $emp{$_}\n" for sort keys %emp; sub emp { my ($t, $data) = @_; $currEmp = $data->trimmed_text (); $emp{$currEmp} ||= ''; } sub prod { my ($t, $data) = @_; my $text = $data->trimmed_text (); return if $text !~ /^\d+(\.\d*)?/; $emp{$currEmp} ||= 0; $emp{$currEmp} += $text; }
Prints:
3017 - 3123 - 96.21127 3192 - 3379 - 6.66666666666667 3384 - 114.285714285714 3417 - 11.4285714285714
DWIM is Perl's answer to Gödel
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Help in manipulating values from two arrays
by zerogeek (Monk) on Mar 24, 2007 at 21:39 UTC | |
by GrandFather (Saint) on Mar 24, 2007 at 21:57 UTC | |
by zerogeek (Monk) on Mar 25, 2007 at 02:32 UTC | |
by chromatic (Archbishop) on Mar 25, 2007 at 06:07 UTC | |
by zerogeek (Monk) on Mar 25, 2007 at 19:14 UTC | |
by chromatic (Archbishop) on Mar 25, 2007 at 20:28 UTC | |
Re^2: Help in manipulating values from two arrays
by rsriram (Hermit) on Mar 26, 2007 at 05:46 UTC | |
by GrandFather (Saint) on Mar 26, 2007 at 10:33 UTC | |
by rsriram (Hermit) on Mar 26, 2007 at 11:49 UTC |
In Section
Seekers of Perl Wisdom