3

readdir を使用してディレクトリのファイルを取得していますが、削除したいと考えています。そして.. grep を使用します。出力は、まだ含まれていることを示しています。と..、しかし、何が問題なのかわかりませんか?

ここに私のコードがあります

    #!/usr/bin/perl

    opendir(Dir,$ARGV[0]);
    @Dirs = readdir(Dir);
    @Dirs = grep { $_ != /./ } @Dirs;
#   @Dirs = grep { $_ =~ /^./ } @Dirs;
    print join("\n",@Dirs);

ありがとう

4

3 に答える 3

5

をエスケープしてみてください.:

@Dirs = grep { $_ !~ /^\.\.?$/ } @Dirs;

ドットは、エスケープされていない場合に任意の文字に一致する特別なメタ文字です。

于 2013-06-07T12:35:37.470 に答える
2

.正規表現では「任意の文字」を意味します。次のようにエスケープしてみてください。\.

于 2013-06-07T12:33:26.040 に答える