my $owned_sites = qr/mysite\.(com|net|org)/i; sub add_sessions { my $root = HTML::TreeBuilder->new_from_content( shift() ); my $session = shift; foreach my $link ($root->look_down( '_tag', 'a' ) ) { next unless my $url = $link->attr('href'); if ( $url =~ m|://([^/]*)/| ) { next if ( $1 !~ $owned_sites ); } # Look for mailto: links. next if ( $url =~ m|^[^/]*:| ); my ( $path, $params ) = split /\?/, $url, 2; my %params = map { split( /=/, $_, 2 ) } split( /&/, $params ); $params{session} ||= $session; $url = join( '?', $path, join( '&', map { "$_=$params{$_}" } keys( %params ) ) ); $link->attr('href', $url); } my $html = $root->as_HTML; $root->delete(); return $html; }