Your code as supplied does not compile:
$ perl -cw 11136410.pl
Missing right curly or square bracket at 11136410.pl line 11, at end o
syntax error at 11136410.pl line 11, at EOF
11136410.pl had compilation errors.
Other problems: you are not using strict, your scope of $dir is incorrect, there is no assignment to $_, you have scalar context when assigning the arguments in your subroutine and your while loop will never end.
Spend a little time trying to fix these issues and post back here if you get stuck.