xml操作に正規表現を使用するのは良い考えではありませんが、この場合はとにかくそれを使用します:
Perlスクリプト:
my $xml = join (/\n/, <main::DATA>);
my @fees = (1, 2, 3, 4);
$xml =~ s/(<Status Fees=")\${Fees}("\/>)/{$1 . shift(@fees) . $2}/ige;
print "$xml";
__DATA__
<Principal ID="122" >
<Status Fees="${Fees}"/>
</Principal>
<Principal ID="123" >
<Status Fees="${Fees}"/>
</Principal>
<Principal ID="124" >
<Status Fees="${Fees}"/>
</Principal>
<Principal ID="125" >
<Status Fees="${Fees}"/>
</Principal>
出力:
<Principal ID="122" >
<Status Fees="1"/>
</Principal>
<Principal ID="123" >
<Status Fees="2"/>
</Principal>
<Principal ID="124" >
<Status Fees="3"/>
</Principal>
<Principal ID="125" >
<Status Fees="4"/>
</Principal>
ここでそれを見てテストしてください。
${Fees}
変数の実際の値に置き換え$Fees
、この変数の名前を変更する場合は、次のようにします。
Perlスクリプト:
my $xml = join (/\n/, <main::DATA>);
my ($fee1, $fee2, $fee3, $fee4) = (1, 2, 3, 4);
$xml =~ s/(<Status Fees=")\${(.*?)}("\/>)/{$1 . eval('$'.$2) . $3}/ige;
print "$xml";
__DATA__
<Principal ID="122" >
<Status Fees="${fee1}"/>
</Principal>
<Principal ID="123" >
<Status Fees="${fee2}"/>
</Principal>
<Principal ID="124" >
<Status Fees="${fee3}"/>
</Principal>
<Principal ID="125" >
<Status Fees="${fee4}"/>
</Principal>
出力:
<Principal ID="122" >
<Status Fees="1"/>
</Principal>
<Principal ID="123" >
<Status Fees="2"/>
</Principal>
<Principal ID="124" >
<Status Fees="3"/>
</Principal>
<Principal ID="125" >
<Status Fees="4"/>
</Principal>
ここでそれを見てテストしてください。