in reply to Fuser under perl

There is a bug in your code.
stdin, stdout, and stderr are fd's 0, 1, and 2.
Thus, the line:

if ((reverse(File::Spec->splitpath($f)))[0] > 3 && -l $f) {

should be:

if ((reverse(File::Spec->splitpath($f)))[0] >= 3 && -l $f) {