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

Chilkat2 Perl
use strict;
use warnings;
use Chilkat2;

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

my $ftp = Chilkat2::Ftp2->new;

$ftp->Hostname('www.my-ftp-server.com');
$ftp->Username('mFtpLogin');
$ftp->Password('myFtpPassword');

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

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

# Retrieve (in XML format) the HOME directory of this FTP account.
my $xmlListing = $ftp->GetXmlDirListing('*.*');
if (!$ftp->LastMethodSuccess) {
    print $ftp->LastErrorText, "\n";
    exit;
}

# Now load the XML and parse it..
my $xml = Chilkat2::Xml->new;
$xml->LoadXml($xmlListing);
print $xml->GetXml(), "\n";

# Iterate over the XML...
my $i = 0;
my $numEntries = $xml->NumChildren;
while ($i < $numEntries) {
    my $xEntry = $xml->GetChild($i);
    if ($xEntry->TagEquals('dir')) {
        print 'Directory: ', $xEntry->Content, "\n";
    } else {
        my $sz = $xEntry->GetChildIntValue('size');
        print 'File: ', $xEntry->GetChildContent('name'), ', size: ', $sz, "\n";
        my $xLastMod = $xEntry->FindChild('lastModTime');
        if ($xEntry->LastMethodSuccess) {
            my $month = $xLastMod->GetAttrValueInt('m');
            my $year = $xLastMod->GetAttrValueInt('y');
            my $day = $xLastMod->GetAttrValueInt('d');
            print '    YYYY-MM-DD: ', $year, '-', $month, '-', $day, "\n";
        }
    }

    $i = $i + 1;
}

$ftp->Disconnect();

print "Success.\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>
#
#