新しいRFCまだ読んでいないのと未
熟ゆえ正確ではないと思いますが。。。
#!/usr/local/bin/perl
$ldh = '[-0-9a-zA-Z]'; # let-dig-hyp
$let = '[a-zA-Z]'; # letter
$unres = q#[-0-9a-zA-Z$_.+!*'(),^]#; # unreserved
$comment =~ m#https?://($ldh+\.)+$let+\.?(\:\d{1,5})?(/$unres*)*(\#$unres+)?#;
URLといっても、httpとhttpsしか拾いませんけどね。
これでかなり正確に拾えると思います。
あと、CGIへのデータ(GETへのQUERY_STRING)はマッチしないように
してあります。