When you call your second subroutine, it's going to start through the first loop of your for(), do the four reads, then return. It's never going to do the other 3 loops.
If you want to do the loop four times and then return a list of all the results, you can do that. Create an array before your for() loop starts, then replace your return with a push to that array:
push @results, $foo1, $foo2, $foo3, $foo4;
Then after the for() loop is finished, return @results.
Available for small or large Perl jobs and *nix system administration; see my home node.