Программист написал функцию, которая должна читать файл и возвращать его содержимое и размер.
И все бы хорошо, но иногда в поле content
оказываются совершенно неправильные значения.
Пример кода можно скачать и поотлаживаться локально.
Это происходит, когда функция получает имя несуществующего файла.
Результат в этом случае получается такой:
Проблема в eval
, которым обернут вызов read_file
.
Если код внутри eval
выполняет die
, то eval
возвращает
undef
в скалярном контексте и пустой список в списковом контексте.
Таким образом, если файл не существует, возвращаемое значение функции превращается в
, а это, конечно, не то, что задумывалось.
Кстати, если бы программист использовал прагму warnings
, он мог бы заметить предупреждение
Odd number of elements in anonymous hash
Короткое исправление могло бы быть таким: