#!/usr/bin/perl use strict; my $string = q{ An email address is foo-master@bar.com, but this http://foo@bar.com/ and this ftp://foo:baz@bar.com/ are not emails. }; my $desired_output = q{ An email address is foo-master@bar.com", but this http://foo@bar.com/ and this ftp://foo:baz@bar.com/ are not emails. }; foreach($string){ # make http or ftp hyperlinks first s#((ht|f)tp://[\S]+)#$1#isg; # now make email addresses hyperlinks # but don't "email-ify" http or ftp URIs s#((?$&#isg; if( m#(?