I skimmed your code, and nothing obvious jumps out at me (the style of the code could be improved by adding strict, but it doesn't look like that's likely to be the source of the problem). Have you verified that you're using the same version of Net::LDAP on all these machines? (/path/to/perl -MNet::LDAP -le 'print $Net::LDAP::VERSION') Are you using exactly the same code on all the machines, or have you modified some of the variables? If so, that's another place I'd look.
If you could provide a more detailed description of the problem - for example, is the file named in $VALID created, or not, and if it is created, are you saying that it is empty? You can also add debugging statements inside the loops that are fetching the data to see what the LDAP server is returning (before the code filters it with the regex). Often a simple print is enough, or use Data::Dumper with $Data::Dumper::Useqq=1; to see hidden whitespace and other control characters.
Update: Also, how are you running the script, from the command line? Because otherwise (e.g. if you're running it from some kind of task scheduler like cron), the output (error messages) might get swallowed there.
Are you posting in the right place? Check out Where do I post X? to know for sure.
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
Want more info? How to link or
or How to display code and escape characters
are good places to start.