Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 May 2004 10:01:51 -0700
From:      Saint Aardvark the Carpeted <aardvark@saintaardvarkthecarpeted.com>
To:        JJB <Barbish3@adelphia.net>
Cc:        "freebsd-questions@FreeBSD. ORG" <freebsd-questions@freebsd.org>
Subject:   Re: Perl metacharacters
Message-ID:  <20040529170151.GB28582@hardesty.saintaardvarkthecarpeted.com>
In-Reply-To: <MIEPLLIBMLEEABPDBIEGAELEFPAA.Barbish3@adelphia.net>
References:  <MIEPLLIBMLEEABPDBIEGAELEFPAA.Barbish3@adelphia.net>

next in thread | previous in thread | raw e-mail | index | archive | help
JJB disturbed my sleep to write:
> if (/(abuse\@.* )/)
>  {
>   $abuse_email = ${1};
>  }
[snip] 
> print($abuse_email) shows that it contains
> abuse@xxxxx.xxx for probes, port scans etc.
> How do I change the if statement so I only get the abuse@xxxxx.xxx
> string?

You want to minimize how much the bracket grabs.  Right now you're
telling it to grab as much as it can (".*"); a better solution would
be

	(/(abuse\@.*? )/)

which tells it to grab the smallest amount it can before the space.
Even better would be:

	(/(abuse\@[\w\.-_]+)\s/)

which grabs any word character, period, hyphen or underscore up to
a space.  Check your local listings to make sure I'm not leaving
out any characters legal for domain names.

 
> If (/(Net-.??-.??-.??-0-1)/)
>  {
>   $net_block = ${1};
>  }
> 
> The data is (Net-xxx-xxx-xxx-0-1)
> Each xxx group will all ways by 1 to 3 digits long and different
> combinations every time.
> When matched I want $net_block just to hold  Net-xxx-xxx-xxx-0-1
> What is the correct syntax?

Something like:

	(/(Net-\d{1,3}-\d{1,3}-\d{1,3}-0-1)/

BTW, you'd be better off emailing Perl questions to a Perl-related
mailing list or newsgroup, or posting them to Perlmonks.org.

-- 
Saint Aardvark the Carpeted
aardvark@saintaardvarkthecarpeted.com
Because the plural of Anecdote is Myth.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040529170151.GB28582>