• ベストアンサー

シンボリックリンクを検出できない問題

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

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

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

tk_1980024
質問者

お礼

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

その他の回答 (1)

回答No.2

open(FD,"find . -follow -print|"); @a = <FD>; close(FD); ではだめですか。

関連するQ&A