in reply to Re: Perl List files in directory
in thread Perl List files in directory

I found the answer:

@files = grep {-f "$dir/$_" && m/.xml/} readdir DIR;

Thanks for the help people

Replies are listed 'Best First'.
Re^3: Perl List files in directory
by Anonymous Monk on Apr 22, 2014 at 15:36 UTC

    I'd suggest a small tweak to that:

    @files = grep {-f "$dir/$_" && /\.xml$/i} readdir DIR;

    Because otherwise the regular expression would have matched a file named "fooxml.bar" as well. Also, this now matches the extension case-insensitively, just in case.

      Hi,

      I have tried your tweak, but now i'm getting an error:

      Error = Illegal seak at ./script.pl line 28

      $directory = "/opt/tmp/"; opendir(DIR, $directory) or die "\nCannot open dir : $!\n"; @files = grep {-f "$directory/$_" && /\.xml$/i} readdir or die "Error += $!"; closedir(DIR);

      Can someone help me?

        The ... or die does not make sense when used in list context.

        The cause you get your error is most likely because the readdir does not return any files. Maybe you meant

        readdir DIR;

        ... instead of a bare readdir?