This is perl, v5.8.0 built for i386-linux-thread-multi です。
あるデレクトリのテキストファイルのみを取得したいのですが、

opendir DIR, '/home/foo/bar' or die;
@files = grep { -f }readdir DIR;
print join("\n", @files);

とすると空でなにも表示されません。2行目を

@files = grep { !-d }readdir DIR; # デレクトリではないもの

とするとデレクトリ以外のファイルが取得できます。
ファイルテスト演算子「-f」では取得できないのですか?