[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Omaha.pm] Fwd: [Kc] Need second look at this...



Sweet. Garrett whipped out the zero width negative look behind assertion.

That's my favorite.

Yes, seriously.  :)

j



Begin forwarded message:

From: Garrett Goebel <ggoebel@goebel.ws>
Date: October 11, 2007 3:40:17 PM CDT
To: Emmanuel Mejias <emmanuel.mejias@gmail.com>
Cc: kcpm <kc@pm.org>
Subject: Re: [Kc] Need second look at this...

In order to fix your regex you'll need to tell us the difference
between somehostpm1 and dr-somehostpm1.

Will a "good" somehostpm1 never be preceeded by 'dr-'? If so...

# Shot at adhering to Perl Best Practices
open my($file), '<', '/etc/hosts';
while (my $line = <$file>) {
     if ($line =~ /(?<!dr-)\S+pm1/) {
         print $line;
     }
}

# Quick'n Dirty
open FILE, '</etc/hosts';
map { print if /(?<!dr-)\S+pm1/ } <FILE>;

I haven't tested it... perhaps it'll work.

(?<!pattern) is a zero width negative look behind assertion. I.e.
it'll match anything that isn't preceeded by the pattern without
including it in the match.

Garrett

On Oct 11, 2007, at 2:44 PM, Emmanuel Mejias wrote:

trying to grep out some info from my /etc/hosts file...just to get
more practice with Perl and well for my personal pleasure, too.

#!/usr/bin/perl

open (FILE, "/etc/hosts");
@lines = <FILE>;
close (FILE);

foreach $line (@lines){
   if ($line =~ /pm1/){
      print $line;
   }
}

the problem with this is that it's printing out some hosts that i
don't want that also have pm1 at the end.

somehostpm1 but it also gets my dr hosts (dr-somehostpm1)

thoughts?

by the way, i had to jump the wifes car so i ended up missing out
on the meeting. gonna try to make the next one for sure, though.

_______________________________________________
kc mailing list
kc@pm.org
http://mail.pm.org/mailman/listinfo/kc

_______________________________________________
kc mailing list
kc@pm.org
http://mail.pm.org/mailman/listinfo/kc