Re: using file globs and regex



pgodfrin <pgodfrin@xxxxxxxxx> wrote:
Greetings,
This program works fine (with file names f1..f8 in the directory):

#!/usr/bin/perl
use warnings;
use strict;
$\="\n";
while(<f*>)
{
print "$_";
if(/f5/)
{
my $fn=$_;
print "File name $fn found..." and exit;
}
}
exit;

But I was hoping to be able to do something like:
my $fn=grep (/f5/,<f*>);

Basically just trying to have less lines of code...any suggestions?


use grep() in a list context instead of in a scalar context.

I don't like using overloaded angle brackets in my code.

If I want equality, I use an operator that tests for equality.

my($fn) = grep ( $_ eq 'f5' , glob 'f*');


--
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"
.



Relevant Pages

  • Re: using file globs and regex
    ... and exit; ... use grepin a list context instead of in a scalar context. ... If I want equality, I use an operator that tests for equality. ... Although it seems like a file test operator would make more sense here. ...
    (comp.lang.perl.misc)
  • Re: using file globs and regex
    ... use grep() in a list context instead of in a scalar context. ... If I want equality, I use an operator that tests for equality. ...
    (comp.lang.perl.misc)
  • Re: Forcing list context on <$fh>
    ... If you put the params into a hash then you can use a "hash slice" ... A test for equality should *look like* a test for equality: ... Is there a nice way to force list context on it? ... There is no way to "force" list context like there is for scalar context. ...
    (comp.lang.perl.misc)