Put "use strict;" and "use warnings;" at the start of your code and let Perl tell you where you've gone wrong. See strict and warnings.
While there may be others, one obvious problem that leaps out at me is "("$Do_Dir" == null )":
"null" is not a keyword in Perl - you're possibly thinking of undef.
"==" is an operator for testing numeric equality; use "eq" for string equality. See perlop: Equality Operators for more complete details.
The whole of that condition should probably be written as "(defined $Do_Dir)". See defined.