is correct, but I don't know if the __DATA__ concern is clear enough for newer users. __DATA__ is only read ONCE during the execution of a script, any secondary calls to it will result in an empty string.
I have found it helpful to use something like Text::Template
to store information that will be read in multiple times and if setup correctly will allow for edits while the process is running. I like Text::Template for its simplicity, but there are dozens of templating options that might help here.