in reply to File::Monitor does not work ...

it does not seem to work
That's not very descriptive, as Corion already alluded to. Are you not getting a print out when you expect it? If so, you may be suffering from buffering. When I add $| = 1; to your code, it starts printing out when I expect it to.

Do you really need those nested while loops?