is the view of the xml fix or is it only your thinkin of storing the data on this way?
use strict;
use XML::Simple;
$filename = "yours.xml";
xml_edit($filename); # return done 1 || error 0
sub xml_edit($){
my$bool=0;
%DB=load($_[0]);
if(exists$DB{student}{id}{2})
{
$DB{student}{gpa}='C';
$bool++;
}
save($_[0],\%DB);
return$bool;
}
#untested
but i recommend you to build a hash of your data within perl and export it via "save($filename,\%hashref);"
for this you got truly the right structure with easy editing potential even if the data gets more bulky.
$perlig =~ s/pec/cep/g if 'errors expected';