• ベストアンサー

ディレクトリ名を取得したい

perlでディレクトリ名だけを取得したいのですが、 なかなかうまい方法が見つかりません。 ファイル名を取得する・・・というのは結構あるのですが、 ディレクトリ名だけ、というのがどうもわかりません。 ちなみにファイル名取得は以下のようにやっています。 my $md; opendir(DIR, 'q'); while (defined($dir = readdir(DIR))) { $md=substr($dir,0,6); } closedir(DIR); ディレクトリ名だけを取得・・・というのはどうやればよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

ファイル名の取得で例示されているものは、ファイル名だけの取得できてませんよね? 質問者さんが書かれているスクリプトだと、 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に格納されます。

azicyan
質問者

お礼

>「何か」の「たまたま」一番最後に入っていたものの そうなんですか・・・ いただいたソースを試してみます。 ありがとうございました

その他の回答 (4)

  • ren10
  • ベストアンサー率52% (9/17)
回答No.5

opendir(DIR, "./"); @list = grep(-d, readdir(DIR)); close(DIR); これでどうでしょう? 配列 @list にディレクトリのみ取得されます

azicyan
質問者

お礼

ありがとうございます。 早速試してみます!

  • Cuty_Cat
  • ベストアンサー率72% (18/25)
回答No.4

私も以前に、同じような質問をこちらで致しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2091615 参考になれば良いのですが。。。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2091615
azicyan
質問者

お礼

すいません。 とても為になります。 ありがとうございます!

  • kary
  • ベストアンサー率55% (10/18)
回答No.3

File::Basenameモジュールを使えばできるのではないでしょうか。ファイル名の取得はbasename、ディレクトリ名の取得はdirnameだと思います。

azicyan
質問者

お礼

ありがとうございます。 調べてやってみます!

回答No.2

参考URLの「ファイル名のみを取得」の所が参考になるかと~

参考URL:
http://perl.misty.ne.jp/12.html
azicyan
質問者

補足

あ、 ここ僕も見つけたんですが、 なぜかエラーがでまくって使えませんでした・・・

関連するQ&A