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;
> }