1. ホーム
  2. スクリプト・コラム
  3. パール

Perl イテレーションディレクトリの例

2022-01-28 08:54:04

環境はwindos、注意点は2つ。

1. activePerl のデフォルトエンコーディングは gbk なので、文字化けを防ぐために文字列を gbk に変換する必要があります。
2、ファイルディレクトリを巡回する場合、特殊なディレクトリを除外する必要があります。 と.

フルコードです。

コピーコード コードは以下の通りです。

#! /usr/bin/perl
 use strict;
 use warnings;
 use Encode qw/from_to/;
 my $path = "e:/CSS Design";
 my $filecount = 0;
 sub parse_env {   
     my $path = $_[0]; #or use my($path) = @_; @_ is similar to arguments in javascript
     my $subpath;
     my $handle;
     if (-d $path) {# whether the current path is a directory
         if (opendir($handle, $path)) {
             while ($subpath = readdir($handle)) {
                 if (! ($subpath =~ m/^\. $/) and ! ($subpath =~ m/^(\. \.) $/)) {
                     my $p = $path."/$subpath";
                     if (-d $p) {
                         parse_env($p);
                     } else {
                         ++$filecount;
                         print $p."\n";
                     }
                 }               
             }
             closedir($handle);           
         }
     }
     return $filecount;
 }
 my $count = parse_env $path;
 my $str = "Total number of files:". $count;
 from_to($str, "utf8", "gbk");
 print $str;

実行結果画像です。