[ale] OT: Perl Question
    Mike Fletcher 
    fletch at phydeaux.org
       
    Fri Nov 12 15:29:56 EST 1999
    
    
  
>>>>> "Robert" == Robert L Harris <nomad at rnd-consulting.com> writes:
    Robert> Ok, I'm writing a perl script that looks at files in
    Robert> specific directories.  At one point, I'm trying to grep
    Robert> file names out of an array.  I'm using:
    Robert> $Skip=grep(/$File/, at FileList);
    Robert> Yes, I do want a scalar returned.  At any rate, there is a
    Robert> point where $File="c++decl" and then I get this error:
    Robert> //usr/bin/c++decl/: nested *?+ in regexp at
    Robert> ./wanderblock.pl line 170.
    Robert> Anyone know a way around this?  Basically, all I need to
    Robert> know is if $File is in @FileList, not it's position or
    Robert> anything else.
        You want to use either the \Q\E special escapes, or the
corresponding `quotemeta' function:
=item quotemeta EXPR
=item quotemeta
Returns the value of EXPR with all non-alphanumeric
characters backslashed.  (That is, all characters not matching
C</[A-Za-z_0-9]/> will be preceded by a backslash in the
returned string, regardless of any locale settings.)
This is the internal function implementing
the C<\Q> escape in double-quoted strings.
If EXPR is omitted, uses C<$_>.
        E.g. in your case one of:
{my $f = quotemeta $File; $skip = grep /$f/, @FileList}
        or
$skip = grep /\Q$File/, @FileList;
-- 
Fletch                | "If you find my answers frightening,       __`'/|
fletch at phydeaux.org   |  Vincent, you should cease askin'          \ o.O'
678 443-6239(w)       |  scary questions." -- Jules                =(___)=
                      |                                               U
    
    
More information about the Ale
mailing list