C2H5OH
с глобальной переменной - это лучший вариант.
Раньше я бы согласился и для небольших скриптов совершенно не критично. Спорить не буду, у самого скрипты часто грязно написаны (сколько угодно переменных). Но я не считаю это правильно. При дальнейшем развитии нужно сразу научится правильно структурировать модули. Идеальная функция не содержит глобальных переменных и освобождает память при завершении. Глобальные переменные всегда хранятся в памяти. При передачи данных в функцию когда переменная многократно содержит одни и теже данные наступает предел максимально доступного размера обрабатываемой информации. К примеру парсишь файл, передаёшь в массив делаешь поиск символа чтобы разрезать, в итоге данные 3 раза повторяются и вместо 200 Мб сможешь открыть только 70 Мб, а то и меньше.
При удалении функции не придётся подчищать связи. Не требуется следить чтобы не назвать переменную именем уже существующей.