Hmmm. Your code works for me under Linux. Some other suggestions:
in reply to Re^2: Net::FTP::Recursive question
in thread Net::FTP::Recursive question
It's not just that the files ending up where you expect? The contents of ABC are going to the home directory. If your intention is to replicate ABC directory. You'll need to create it and cd to it yourself:
Set Debug => 1 when you open the ftp object. It'll give you lots of useful debugging info.
$ftp_obj->mkdir('ABC'); # make sure the directory exists
$ftp_obj->cwd('ABC') || die $ftp_obj->message;;