in reply to Printing Columns from Two Different Files

while (<>) {

It's not hanging, it's waiting for input on STDIN just like you asked it to do. Perhaps you mean to iterate over @data instead?