I think I got it. I thought that the segment records where automatically written in the file, but apparently only the $buffer content is!
This updated code actually write something in the segment, as I get the content of the record and write it to the buffer.
So the segments's records are only there to tag/organize the data before write to the buffer ?
#add MP header information in the APP2 segment for the image
my $buffer;
my $segref = new Image::MetaData::JPEG::Segment('APP2', \$buffer, 'NOP
+ARSE');
my $head = "MPF0";
my $recref = $segref->store_record('MP_HEADER', $LONG, \$head, 1);
$buffer = $recref->get_value();