perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andy Armstrong <a...@hexten.net>
Subject Re: regex quickie
Date Thu, 26 Apr 2007 17:47:55 GMT
On 26 Apr 2007, at 18:32, Jonathan Vanasco wrote:
> i'd keep the dispatch essentially the  same, but change the regex  
> to something more like this:
>
> 	my %despatch = (
> 	  'yahoo' => sub { print "\n Yahoo! $_[0]\n"; },
> 	  'google' => sub { print "\n Google! $_[0]\n"; },
> 	 );
>
> 	sub dispatcher
> 	{
> 		my	( $string )= @_;
> 		my @parts= $string =~ qr/^(?:http:\/\/)?(?:www\.)?(google|yahoo| 
> msn)\.com(?:\/\?q=([^&]*))?/i;
> 		if ( scalar @parts ) {
> 			my	( $domain , $q )= @parts;
> 			$despatch{lc($domain)}->($q);
> 		}
> 	}
>
> 	dispatcher( 'google.com' );
> 	dispatcher( 'google.com/?q=test' );

Yeah, but that only works if all the sites use q= to prefix the query  
- and have to maintain the site names in two places - once in the RE  
and once in the despatch table.

It'd be better to parse the query parameters into a hash and pass  
that to the handlers - it's the per site handlers that should know  
how to extract the query.

IMO of course :)

-- 
Andy Armstrong, hexten.net


Mime
View raw message