dポイントプレゼントキャンペーン実施中!

perlでディレクトリ名だけを取得したいのですが、
なかなかうまい方法が見つかりません。
ファイル名を取得する・・・というのは結構あるのですが、
ディレクトリ名だけ、というのがどうもわかりません。

ちなみにファイル名取得は以下のようにやっています。
my $md;
opendir(DIR, 'q');
while (defined($dir = readdir(DIR))) {
$md=substr($dir,0,6);
}
closedir(DIR);

ディレクトリ名だけを取得・・・というのはどうやればよいのでしょうか。

A 回答 (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に格納されます。
    • good
    • 0
この回答へのお礼

>「何か」の「たまたま」一番最後に入っていたものの

そうなんですか・・・
いただいたソースを試してみます。

ありがとうございました

お礼日時:2006/05/24 14:01

opendir(DIR, "./");


@list = grep(-d, readdir(DIR));
close(DIR);

これでどうでしょう?
配列 @list にディレクトリのみ取得されます
    • good
    • 4
この回答へのお礼

ありがとうございます。

早速試してみます!

お礼日時:2006/05/28 14:16

私も以前に、同じような質問をこちらで致しました。


http://oshiete1.goo.ne.jp/kotaeru.php3?q=2091615

参考になれば良いのですが。。。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=2091615
    • good
    • 0
この回答へのお礼

すいません。
とても為になります。

ありがとうございます!

お礼日時:2006/05/28 14:16

File::Basenameモジュールを使えばできるのではないでしょうか。

ファイル名の取得はbasename、ディレクトリ名の取得はdirnameだと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/28 14:14

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



参考URL:http://perl.misty.ne.jp/12.html

この回答への補足

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

補足日時:2006/05/24 14:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています