in reply to Remembering values from multiple condition 'if'

Hi,
besides the solution proposed by other monks, there is the following

use strict; my @files = grep ($_,map -e $_ && $_ , qw(foo foobar bar)); if (@files) { print "there are files\n"; #here @files holds the names of the files print(join(",",@files),"\n"); } else { print "no files\n"; }
which places the existing file's names in an array.

cheers


Leo TheHobbit

Replies are listed 'Best First'.
Re^2: Remembering values from multiple condition 'if'
by Aristotle (Chancellor) on Jul 02, 2002 at 01:51 UTC
    Argh, I'm out of votes. Consider yourself ++ed. Just a question though, why don't you just do like so? my @files = grep -e, qw(foo foobar bar); ____________
    Makeshifts last the longest.

      Hi,
      Well, with that grep, @files will end up containing only ones, and you'll not even be able to sort out exactly 'which' files where there...

      Cheers


      Leo TheHobbit
        Actually, no - that would happen if I were using map. grep doesn't return the value of the expression, it returns the original element if the expression evaluates to true. Observe:
        $ touch a b e ; perl -le'@f=grep -e, qw(a b c d e f); print "@f"' a b e
        ____________
        Makeshifts last the longest.