Sample code for 30+ languages & platforms
Perl

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

# This example assumes Chilkat Ftp2 to have been previously unlocked.
# See Unlock Ftp2 for sample code.

$ftp = chilkat::CkFtp2->new();

$ftp->put_Hostname("www.my-ftp-server.com");
$ftp->put_Username("mFtpLogin");
$ftp->put_Password("myFtpPassword");

# Connect to the FTP server.
$success = $ftp->ConnectOnly();
if ($success != 1) {
    print $ftp->lastErrorText() . "\r\n";
    exit;
}

# Authenticate with the FTP server.
$success = $ftp->LoginAfterConnectOnly();
if ($success != 1) {
    print $ftp->lastErrorText() . "\r\n";
    exit;
}

# Retrieve (in XML format) the HOME directory of this FTP account.
$xmlListing = $ftp->getXmlDirListing("*.*");
if ($ftp->get_LastMethodSuccess() != 1) {
    print $ftp->lastErrorText() . "\r\n";
    exit;
}

# Now load the XML and parse it..
$xml = chilkat::CkXml->new();
$xml->LoadXml($xmlListing);
print $xml->getXml() . "\r\n";

# Iterate over the XML...
$i = 0;
$numEntries = $xml->get_NumChildren();
while ($i < $numEntries) {
    # xEntry is a Xml
    $xEntry = $xml->GetChild($i);
    if ($xEntry->TagEquals("dir") == 1) {
        print "Directory: " . $xEntry->content() . "\r\n";
    }
    else {
        $sz = $xEntry->GetChildIntValue("size");
        print "File: " . $xEntry->getChildContent("name") . ", size: " . $sz . "\r\n";
        # xLastMod is a Xml
        $xLastMod = $xEntry->FindChild("lastModTime");
        if ($xEntry->get_LastMethodSuccess() == 1) {
            $month = $xLastMod->GetAttrValueInt("m");
            $year = $xLastMod->GetAttrValueInt("y");
            $day = $xLastMod->GetAttrValueInt("d");
            print "    YYYY-MM-DD: " . $year . "-" . $month . "-" . $day . "\r\n";

        }

    }

    $i = $i + 1;
}

$ftp->Disconnect();

print "Success." . "\r\n";

# Sample XML directory listing:
# <?xml version="1.0" encoding="utf-8" ?>
# <remoteDir>
#     <dir>Desktop</dir>
#     <dir>Documents</dir>
#     <dir>Downloads</dir>
#     <dir>Music</dir>
#     <dir>Pictures</dir>
#     <dir>Public</dir>
#     <dir>Templates</dir>
#     <dir>Videos</dir>
#     <file>
#         <name>c.py</name>
#         <size>1244</size>
#         <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" />
#     </file>
#     <file>
#         <name>cacerts_linux</name>
#         <size>177207</size>
#         <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" />
#     </file>
#     <file>
#         <name>empty.txt</name>
#         <size>0</size>
#         <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" />
#     </file>
#     <file>
#         <name>hamlet.xml</name>
#         <size>279658</size>
#         <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" />
#     </file>
# </remoteDir>
# 
#