Of course that the best idea is always the simplest, why not put the variable with the "big data" in global (without 'my' or 'local'), to be read by all the program?
K.I.S.S. -> Kip It Simple, Stupid! :-P
Nope. That would actually make things more complicated, since now you have to remember that this subroutine affects that global. It tends to make things more fragile, and much harder to follow for maintainers.
The global has no benefits whatsoever over passing data in by reference. You can modify data via a reference just as well as you can with a global...