プロが教えるわが家の防犯対策術!

あるディレクトリの下のリンク以外を抽出しようとして以下のようにファイルテスト演算子を使用してみたのですが、どうやらシンボリックリンクかどうかを上手く識別できていない様子です。
どうしてなのでしょうか?またどのようにしたら宜しいのでしょうか?


#! /bin/perl

opendir(MYVECT,"./myvect" ) || die "cannot open myvect";

while($name = readdir(MYVECT)){
if(! -l $name){
print "$name\n";
}
}
exit;


# ls -l myvect
lrwxrwxrwx aaa.vr -> test.vr

# myperl.pl
test.vr
aaa.vr

よろしくお願い致します。

A 回答 (2件)

if(! -l $name){ の判定は、


myvectのディレクトリ下で行っていません。
従って、aaa.vrは存在しないファイルとして扱われる為、正しい結果となりません。
以下の何れかの方法をとってください。
方法1:myvectへ移動後、ファイルテストをする
chdir("./myvect");
opendir(MYVECT,"." ) || die "cannot open myvect";
以降同様
方法2:
ファイルテストを以下のようにする。
if(! -l "./myvect/$name"){
    • good
    • 0
この回答へのお礼

お礼非常に遅くなり、どうもすみませんでした。ありがとう御座います。

お礼日時:2004/06/08 16:18

open(FD,"find . -follow -print|");


@a = <FD>;
close(FD);
ではだめですか。
    • good
    • 0

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