oops, sorry
please ignore mail - the solution is too obvious:
$output =~s/$key/$repValue$var/g;
allan

allan wrote:
> 
> hello
> im in trouble when adding identical elements into a hash like in the
> script below.
> i want to print:
> 2 kr
> 3 %
> 2 kr
> 4 kr
> 
> but fail on the third line which is identical to the first.
> i have tried with the exists function but i reckon the problem must be
> in the foreach loop thru the hash elements (which is one element too
> short and therefore will fail subsequently).
> 
> are there any hash-workarounds for this - (im able to solve the script
> task otherwise, but would really like to use a hash due to performance).
> 
> thanks
> allan
> 
> #!perl
> 
> my $input = "<dcv id=1 more vartype=1>\n<dcv id=2 more vartype=2>\n<dcv
> id=1 more vartype=1>\n<dcv id=3 more vartype=1>\n";
> 
> my %xmlHash;
> my $aspVariable = perlMainLoop($input);
> print $aspVariable;
> 
> sub perlMainLoop {
>         my $output = $_[0];
>         perlGetXml($output);
>         foreach my $key (keys %xmlHash) {
>                 my @temp = split(/::/, $xmlHash{$key});
>                 my $var = $temp[1] == 1 ? " kr" : " %";
>                 my $repValue = calculate($temp[0]);
>                 $output =~s/$key/$repValue$var/;
>         }
>         return $output;
> }
> 
> sub calculate {
>         $_ = $_[0];
>         my $use = ($_ + 4) -3;
>         return $use
> }
> 
> sub perlGetXml {
>         $_ = $_[0];
>         my $temp;
>         while (/(<dcv[^>]+id=(\d+)[^>]+vartype=(\d+)>)/ig) {
>                 $temp = $1;
>                 $xmlHash{$temp} = "$2::$3";
>         }
>         return %xmlHash;
> }

Reply via email to