in reply to passing param value throughout GET method

You're not using param() correctly.
You have passed 'id=$id' to your CGI. Therefore, you can expect param('id') to return the value contained in $id.
If you had this in source.cgi:
$testo=qq(<a href="/cgi-bin/a_test/test.cgi?id=$id&fred=wombat">$testo +</a>);
Then you could do something like this:
foreach(param()) { print "$_ = ".param($_)."<br>\n"; }
And you would get:
id = [whatever was in $id] fred = wombat

This should demonstrate the two ways to call param().