in reply to Re:Need help understanding code snippet with "grep -f"
in thread Need help understanding code snippet with "grep -f"

my @files = grep {-f} map {glob "$_/*vp.o$id"} qw/ archiv/;
I figure the grep -f and the map are both not necessary.
Shouldn't this work also?
my @files = glob {"archiv/*vp.o$id"};

Replies are listed 'Best First'.
Re^3: Need help understanding code snippet with "grep -f"
by afoken (Chancellor) on Dec 23, 2015 at 09:20 UTC
    I figure the grep -f and the map are both not necessary. Shouldn't this work also?
    my @files = glob {"archiv/*vp.o$id"};

    No. glob does not check the type of the file. -f does:

    /tmp>touch foo.txt /tmp>mkdir bar.txt /tmp>ls -lF [...] drwxr-xr-x 2 alex users 40 Dec 23 10:16 bar.txt/ -rw-r--r-- 1 alex users 0 Dec 23 10:16 foo.txt [...] /tmp>perl -E 'say for glob "*.txt"' bar.txt foo.txt /tmp>perl -E 'say for grep -f,glob "*.txt"' foo.txt /tmp>

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      Yes, this is quite correct!

      We are getting far from the original point.

      I think that instead of creating a bunch of sub-directories, a simple DB file would be just fine. An EXCEL .csv file would be fine.

Re^3: Need help understanding code snippet with "grep -f"
by GrandFather (Saint) on Dec 23, 2015 at 08:47 UTC

    The map is useful if you have a list containing more than one item. As I said in my OP the grep is redundant if you are using glob.

    Premature optimization is the root of all job security
      I think the OP has working code and all is fine.

      I don't see any reason at all to quibble. The Perl map{} especially in conjunction with Perl grep{} in the comma format can be hard to understand.