Looks like the first value in
@file_names is uninitialised. There's nothing wrong with your usage of
foreach - except that it's going to exit immediately after printing the first value in
@file_names instead of iterating through the entire array. Here's a simple way of generating the warning (and, btw, it is only a warning, not an error):
C:\_32>perl -wle "@file_names=(undef);foreach(@file_names){print $_}"
Use of uninitialized value in print at -e line 1.
If you're on nix and not windows then you'll need to replace the double quotes with single quotes.
Cheers,
Rob