As
repson says $_ is a global, to preserve your initial array I guess you'd have to protect it with
while (local $_ = <IN>) { in the do_something sub
And now, as he looked and saw the whole Hellespont covered with the vessels of his fleet, and all the shore and every plain about Abydos as full as possible of men, Xerxes congratulated himself on his good fortune; but after a little while he wept...
Asked why he was weeping he replied
..."There came upon me," replied he, "a sudden pity, when I thought of the shortness of man's life, and considered that of all this host, so numerous as it is, not one will be alive when a hundred years are gone by."
The History of Herodotus By Herodotus Written about 440 B.C.