--- title: '『[新版Perl言語プログラミングレッスン入門編』第11章 ファイル操作・途中' author: kazu634 date: 2008-03-13 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3823;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Perl - Programming ---
今日はファイル操作だよー。
use strict; use warnings; my $dirname = "."; opendir(DIR, $dirname) or die "$dirname: $!"; while (my $dir = readdir(DIR)) { print $dir, "\n"; } closedir(DIR);
こんな感じがお約束らしい。
use strict; use warnings; # 変数の宣言 my $hline = '=-' x 30 . "\n"; my $dirname = '.'; # カレントディレクトリを開く opendir(DIR, $dirname) or die "$dirname: $!"; # カレントディレクトリのファイルを逐一チェックして処理を行う while (my $dir = readdir(DIR)) { # 普通のファイルじゃなければ、次のファイルチェックする next unless (-f $dir); # ファイルの拡張子が「.html」じゃなければパスして、次のファイルへ next unless ($dir =~ /\.html$/); # 処理するファイルの表示 print $hline; print $dir, "\n"; print $hline; # 実際にファイルを開いて、中身を表示する open(FILE, '$dir') or die "$!"; while (my $line = <FILE>) { print $line; } close(FILE); } # ディレクトリを閉じる closedir(DIR😉
use strict; use warnings; &traverse('.'); sub traverse { # 引数を$dirnameに代入 my $dirname = shift; # パスの区切り文字を指定 my $delim = '/'; # ディレクトリを開いて、一つ一つ処理 opendir(DIR, $dirname) or die "$dirname: $!"; foreach my $entry (readdir(DIR)) { # カレントディレクトリだったらパス next if ($entry eq '.'); # 親ディレクトリだったらパス next if ($entry eq '..'); # $dirnameの最後が「/」or「\」だったら、区切り文字をnullに if ($dirname =~ /[\/\\]$/) { $delim = ''; } # 表示 my $filename = "$dirname$delim$entry"; print $filename, "\n"; # ディレクトリなら再帰的にtraverseを呼び出す if (-d $filename) { &traverse($filename); } else { ここで処理したい内容を書く! } } }