Sample code for 30+ languages & platforms
Perl Requires Chilkat v11.0.0+

SharePoint Get Files in Root Folder

See more SharePoint Examples

Gets the list of files that exist in the root folder.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

#  This requires the Chilkat API to have been previously unlocked.
#  See Global Unlock Sample for sample code.

$http = chilkat::CkHttp->new();

#  --------------------------------------------------------------------------------------------------------
#  Provide the information needed for Chilkat to automatically fetch the OAuth2.0 access token as needed.

#  To create your App Registration for SharePoint in Azure Entra ID,
#  see How to Create SharePoint App Registration for OAuth 2.0 Client Credentials

$jsonOAuthCC = chilkat::CkJsonObject->new();
$jsonOAuthCC->UpdateString("client_id","CLIENT_ID");
$jsonOAuthCC->UpdateString("client_secret","SECRET_VALUE");
$jsonOAuthCC->UpdateString("scope","https://graph.microsoft.com/.default");
$jsonOAuthCC->UpdateString("token_endpoint","https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token");

$http->put_AuthToken($jsonOAuthCC->emit());
#  --------------------------------------------------------------------------------------------------------

#  Indicate that we want a JSON reply
$http->put_Accept("application/json;odata=verbose");

$http->SetUrlVar("sharepoint_hostname","example.sharepoint.com");
$sbJson = chilkat::CkStringBuilder->new();
$success = $http->QuickGetSb("https://graph.microsoft.com/v1.0/sites/SITE_ID/drive/root/children",$sbJson);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

$json = chilkat::CkJsonObject->new();
$json->LoadSb($sbJson);

#  Iterate over the results and get each file's name, size, and last-modified date/time.

$numFiles = $json->SizeOfArray("d.results");
print "Number of Files in the SharePoint root folder = " . $numFiles . "\r\n";

$i = 0;
while ($i < $numFiles) {
    $json->put_I($i);

    $filename = $json->stringOf("d.results[i].Name");
    $fileRelativeUri = $json->stringOf("d.results[i].ServerRelativeUrl");
    $fileSize = $json->IntOf("d.results[i].Length");

    print ($i + 1) . ": " . $filename . "\r\n";
    print "    Relative URI: " . $fileRelativeUri . "\r\n";
    print "    Size in Bytes: " . $fileSize . "\r\n";

    $i = $i + 1;
}

#  The output of this program when I tested it: