You seem confused about what is returned from a function and the stuff that is printed to the screen/browser. That said, if I understand you correctly you want something like the following, leave the second() function as above.
if($tran eq 'edit'){
second(common($val_1, $val_2));
}
else{
first(common($val_1, $val_2));
}
sub common{
my $arg_1 = shift;
my $arg_2 = shift;
my $val_1 = "Tested";
my $val_2 = "Passed";
return ($arg_1,$arg_2,$val_1,$val_1);
}
sub first
{
my ($arg_1, $arg_2, $val_3, $val_4) = @_;
print "I've got::: Val 1=$arg_1 and Val 2=$arg_2<br>\n";
print "<br>And I have::: Val 3=$val_3 and Val 4=$val_4<br>\n";
print "<br><a href=\"pass.pl?tran=edit\">Edit X</a>\n";
}