5 use experimental 'multidimensional';
6 use List::Util qw(sum);
16 } elsif (/^\$ cd \.\.$/) {
18 } elsif (/^\$ cd (.*)/) {
21 } elsif (/^dir (.*)/) {
22 $dirs{join('/', @path, $1)} = 0;
23 } elsif (/^(\d+) (.*)/) {
24 my $file = join('/', @path, $2);
29 for my $dir (keys %dirs) {
30 for my $file (keys %files) {
31 $dirs{$dir} += $files{$file} if $file =~ /^$dir\//;
35 my $reqd = $dirs{''} - 40000000;
37 for my $dir (sort { $dirs{$a} <=> $dirs{$b} } keys %dirs) {
38 if ($dirs{$dir} >= $reqd) {
39 say $dir, ' ', $dirs{$dir};