in reply to passing variable problem

Change your for-loop.
my $filelock; for my $filelock (@locks) { #### To #### my $filelock; for $filelock (@locks) {

That should do the trick. Now, 10 points if you can tell me why ...

------
We are the carpenters and bricklayers of the Information Age.

The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

... strings and arrays will suffice. As they are easily available as native data types in any sane language, ... - blokhead, speaking on evolutionary algorithms

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.