- ベストアンサー
ディレクトリ名を取得したい
perlでディレクトリ名だけを取得したいのですが、 なかなかうまい方法が見つかりません。 ファイル名を取得する・・・というのは結構あるのですが、 ディレクトリ名だけ、というのがどうもわかりません。 ちなみにファイル名取得は以下のようにやっています。 my $md; opendir(DIR, 'q'); while (defined($dir = readdir(DIR))) { $md=substr($dir,0,6); } closedir(DIR); ディレクトリ名だけを取得・・・というのはどうやればよいのでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ファイル名の取得で例示されているものは、ファイル名だけの取得できてませんよね? 質問者さんが書かれているスクリプトだと、 DIRの中にある「何か」の「たまたま」一番最後に入っていたものの「0文字目~6文字目」までを取得するスクリプトになっているのわかりますか? my @file; my @directory; my $check_dir = "./q/"; $ct =0; opendir(DIR,$check_dir); while( defined($temp=readdir(DIR))){ #カレントディレクトリまたは上位ディレクトリの場合はパス if( $temp eq '.' || $temp eq '..' ){ next;} #ファイルの場合 if( -f $check_dir.$temp ){ push @file, $temp; } #ディレクトリの場合 if( -d $check_dir.$temp ){ push @directory, $temp; } } $check_dirに設定されているディレクトリに格納されているファイルは@fileに、ディレクトリは@directoryに格納されます。
その他の回答 (4)
- ren10
- ベストアンサー率52% (9/17)
opendir(DIR, "./"); @list = grep(-d, readdir(DIR)); close(DIR); これでどうでしょう? 配列 @list にディレクトリのみ取得されます
お礼
ありがとうございます。 早速試してみます!
- Cuty_Cat
- ベストアンサー率72% (18/25)
私も以前に、同じような質問をこちらで致しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2091615 参考になれば良いのですが。。。
お礼
すいません。 とても為になります。 ありがとうございます!
- kary
- ベストアンサー率55% (10/18)
File::Basenameモジュールを使えばできるのではないでしょうか。ファイル名の取得はbasename、ディレクトリ名の取得はdirnameだと思います。
お礼
ありがとうございます。 調べてやってみます!
- pchan0022000
- ベストアンサー率42% (112/261)
参考URLの「ファイル名のみを取得」の所が参考になるかと~
補足
あ、 ここ僕も見つけたんですが、 なぜかエラーがでまくって使えませんでした・・・
お礼
>「何か」の「たまたま」一番最後に入っていたものの そうなんですか・・・ いただいたソースを試してみます。 ありがとうございました