Perhaps the following will be helpful:
use strict;
use warnings;
use Cwd;
use JSON;
my %hash;
my $currDir = Cwd::cwd();
push @{ $hash{$currDir} }, { name => $_, size => ( stat($_) )[7] } for
+ <*>;
my $j = encode_json \%hash;
print $j;
Sample output:
{"/home/user/programming/Perl/tmp":[{"name":"File1.txt","size":63},{"n
+ame":"File2.txt","size":55},{"name":"temp5.pl","size":196},{"name":"t
+est.pl","size":197}]}
When run, it gets the current dir, uses it as the hash key whose value is a reference to an array of (file and filesize) hashes. That hash is later json encoded. Substitute your own path in $currDir, as needed.