do is "not really a function". It is a block that
has a seperate scope from wherever it was called from. This
allows you to localize $/ so that when execution
leaves our "temporary" scope, $/ will be what it
was before it was changed.

You may set it to a multi-character
string to match a multi-character terminator, or
to "undef" to read through the end of file.

Finally, <DATA> returns the next line from the
filehandle DATA, and since $/ is
undefined, the entire contents of the file are
returned and "caught" in a scalar.
UPDATE: i should add that this is one of those few cases
where local is a good choice. For example,

For the record, tye was the first one to show me that
trick. (tye++ yet again) But .... please be careful with
local - reserve its use for temporarily resetting
Perl's built-in variables. Don't use it on, well, anything
else. ;) Read Anti-snippet (or, "local" considered dangerous to fools") if you haven't already.