Perlサンプル7 ファイル一覧を表示
投稿:2019-08-28
決まったディレクトリ内のファイル一覧を表示します。
#!/usr/bin/env perl
use v5.26;
use utf8;
use strict;
use warnings;
use Cwd;
use Encode::Argv;
use Encode::Locale;
use FindBin;
use open IO => ":utf8";
binmode STDIN, ":encoding(console_in)";
binmode STDOUT, ":encoding(console_out)";
$| = 1;
say "ディレクトリ変更前:" . Encode::decode locale_fs => getcwd();
# ディレクトリ名をデコードしてもエンコードして渡すからデコード/エンコードを省略
chdir $FindBin::Bin; # chdir Encode::encoode locale_fs => Encode::decode(locale_fs => $FindBin::Bin);
say "ディレクトリ変更後:" . Encode::decode locale_fs => getcwd();
use constant DIRNAME => "俺の嫁";
say for sort map {Encode::decode locale_fs => $_} glob Encode::encode locale_fs => DIRNAME . "/*.txt";
ディレクトリ「俺の嫁」の中にファイルを作ります。 一覧表示が目的なのでファイルの中身は空です。
スクリプトと同じディレクトリから起動した場合です。
C:\data\PerlSample>perl perlsample_007.pl ディレクトリ変更前:C:/data/PerlSample ディレクトリ変更後:C:/data/PerlSample 俺の嫁/たこルカ1号.txt 俺の嫁/たこルカ2号.txt 俺の嫁/たこルカ3号.txt 俺の嫁/たこルカ4号.txt 俺の嫁/ルカ姐さん(大).txt 俺の嫁/ルカ姐さん(小).txt
他のディレクトリから起動した場合です。
C:\data>perl perlsample/perlsample_007.pl ディレクトリ変更前:C:/data ディレクトリ変更後:C:/data/perlsample 俺の嫁/たこルカ1号.txt 俺の嫁/たこルカ2号.txt 俺の嫁/たこルカ3号.txt 俺の嫁/たこルカ4号.txt 俺の嫁/ルカ姐さん(大).txt 俺の嫁/ルカ姐さん(小).txt
use Cwd
現在のディレクトリを取得するのに使います。
Cwd - get pathname of current working directory - metacpan.org
use FindBin
スクリプトがあるディレクトリが$FindBin::Binに入っています。
FindBin - Locate directory of original perl script - metacpan.org
chdir
「カレントディレクトリを EXPR に移します。」
Perlの組み込み関数 chdir の翻訳 - perldoc.jp
glob
ファイルを検索します。
Perlの組み込み関数 glob の翻訳 - perldoc.jp
map
「LIST の個々の要素に対して、BLOCK か EXPR を評価し ($_ は、ローカルに個々の要素が設定されます) 、 それぞれの評価結果からなるリスト値が返されます。」
Perlの組み込み関数 map の翻訳 - perldoc.jp