- ベストアンサー
シンボリックリンクを検出できない問題
あるディレクトリの下のリンク以外を抽出しようとして以下のようにファイルテスト演算子を使用してみたのですが、どうやらシンボリックリンクかどうかを上手く識別できていない様子です。 どうしてなのでしょうか?またどのようにしたら宜しいのでしょうか? #! /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 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
if(! -l $name){ の判定は、 myvectのディレクトリ下で行っていません。 従って、aaa.vrは存在しないファイルとして扱われる為、正しい結果となりません。 以下の何れかの方法をとってください。 方法1:myvectへ移動後、ファイルテストをする chdir("./myvect"); opendir(MYVECT,"." ) || die "cannot open myvect"; 以降同様 方法2: ファイルテストを以下のようにする。 if(! -l "./myvect/$name"){
その他の回答 (1)
- mosuradazo
- ベストアンサー率60% (6/10)
回答No.2
open(FD,"find . -follow -print|"); @a = <FD>; close(FD); ではだめですか。
お礼
お礼非常に遅くなり、どうもすみませんでした。ありがとう御座います。