Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.70 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Encode;
  5.  
  6. sub find_exts {
  7.     my ($start_dir, $exts) = @_;
  8.     $start_dir =~ s|/+$||;
  9.     my $dirh;
  10.     my @subdirs;
  11.     opendir $dirh, $start_dir;
  12.     while (my $de = decode_utf8 readdir $dirh) {
  13.         if (-d $de && $de ne '.' && $de ne '..') {
  14.             push @subdirs, "$start_dir/$de";
  15.             next;
  16.         }
  17.         if (-f $de) {
  18.             my ($ext) = $de =~ /.\.([^.]*)$/;
  19.             $ext //= '';
  20.             $exts->{$ext}++;
  21.         }
  22.     }
  23.     find_exts(pop @subdirs, $exts) while @subdirs;
  24.     closedir $dirh;
  25.     return $exts;
  26. }
  27.  
  28. my $exts = find_exts('.', {});
  29. printf("%5d %10s\n", $exts->{$_}, $_) for sort keys %$exts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement