Позвольте мне предположить: далее в вашей программе у вас в строке 283 есть что-то вроде этого:
my $function = $gene_hash{$some_var}->{Function};
Это не удастся с упомянутым сообщением об ошибке, потому что у вас есть скаляры (то есть "undef"), сохраненные в качестве значений в вашем хеше. Вам либо нужно защитить доступ, например
if (ref($gene_hash{$some_var}) eq "HASH") {
# access value as hash here
...
или использовать какой-либо другой метод для обнаружения «неизвестного», например
} else { # Gene has no function
$gene_hash{$gene_id} = {};
}
...
if (exists $gene_hash{$some_var}->{Function}) {
# access function key in here
...
Груша:: Text_Wiki является другой опцией, хотя это только обрабатывает случай текстового форматирования. Это не было обновлено с июня 2007, но включает несколько форматов Wiki (все из которых имеют другие последние даты выпуска).
Форматы, которые поддержки Text_Wiki:
Это имеет лицензию LGPL, таким образом, не должно быть никаких проблем лицензирования с включением в проект GPL.
Я настоятельно рекомендую MediaWiki, механизм Wiki, который выполняет Википедию.
Править: Согласно Вашему комментарию, MediaWiki очень встраиваем. Я интегрировал его в многочисленных проектах за эти годы.
Я использовал DokuWiki в прошлом и был довольно доволен им. Это является довольно маленьким, код не является самым чистым, но не слишком трудно заглядывать Вашей собственной схеме аутентификации (например), для интеграции с существующей пользовательской системой.
Это - GPL2, который соответствует Вашему требованию. Это использует файловую систему в качестве устройства хранения данных, так может не масштабировать это хорошо, но для основного материала Wiki с достойным набором функций это могло бы быть тем, что Вы ищете.
Мне нравится DokuWiki, но pmWiki мог бы быть лучше для Вас. Вот список всего PHP wikis: http://www.wikimatrix.org/search.php?sid=183