This is a Tie object to map a row (record) of enhanced Field:Value data to a hash. This sets fixed keys so that they match the columns of the data. Values can go over more than one line. Fields can have multiple values.

Field names cannot have spaces in them, indeed, they must consist of plain alphanumeric characters or underscores. They are case-sensitive.

The format of the string is basically a multi-line string in Field:Value format, with the addition that if a line does not start with a known fieldname followed by a colon, that the contents of that line is added to the value of the previous field.

If a particular FieldName is repeated, its value is added to the existing value of that FieldName, and it becomes a multi-value field.

Return the names of the fields in the order they were defined, rather than the random order that "keys" would give. This will either be the array which was used when the hash was tied, or the order that fields were read from a string if set_from_string or set_from_xml_string is called with override_fields true.