chromatic's regex appears to be picking up the domain rather than the path. Did I miss something?
Heh. chromatic misspelled 'HTTP_REFERER' by spelling 'referrer' correctly :) The beauty of misspelled standards...
I'd use the following regex, so long as you remember that the referrer can be easily spoofed and this isn't being used for security:
$ENV{HTTP_REFERER} =~ m!^[^:]+://[^/]+/([^?]+)! or die "No path info!"
+;
my $path = $1;
The final [^?]+ strips off the query string. Switch it to .* if you want the query string.
The or die on the regex kicks off if we don't have a path. Obviously, if the referrer is something like "http://www.yahoo.com/", you're going to have a problem. However, I assumed that your referrer would probably have a path appended. You can change that to or some_error_subroutine() if you like.
Alternately, if no path info is acceptable, make sure that $path is set to "" on a regex failure. Otherwise, if anything was already in $1, then that would be assigned to $path and obviously, this is undesirable (thanks to chromatic for pointing that out to me).
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just go the the link and check out our stats. |