Это ошибка дизайна.Я думаю, что мы согласны с тем, что он вообще не должен приводить значение хеш-функции к строке, но в то время это, вероятно, казалось хорошей идеей, и \0
просто является наименее плохим выбором по различным причинам малой важности.
Редактировать : Люди обычно избегают вставлять NUL в свои данные именно потому, что это приводит к поломке в программах на C, поэтому это делает этот символ несколько более удобным в качестве разделителя.
Редактировать2 : Хоббс комментирует , что он восходит к Perl 4, поэтому ошибка не в оригинальном дизайне, а в переносе, а затем в недостаточно усердной попытке отказаться от возможности.
Ну, задним числом всегда идеально. Hash :: MultiValue - это более разумная структура данных, о которой вы думали.