http://qs321.pair.com?node_id=675465


in reply to Passing Sub Values

I don't really know what it is you want, but perhaps something like this:
use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use strict; print header(); my $tran = 'edit'; #param("tran"); my $val_1 = "My Name"; my $val_2 = "Zip Code"; if($tran eq 'edit'){ second(first($val_1, $val_2)); } else{ first(); } sub first { my $arg_1 = shift; my $arg_2 = shift; print "I've got::: Val 1=$arg_1 and Val 2=$arg_2<br>\n"; my $val_3 = "Tested"; my $val_4 = "Passed"; 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"; return ($arg_1,$arg_2,$val_3,$val_4); } sub second { my $got_val_1 = $_[0]; my $got_val_2 = $_[1]; my $got_val_3 = $_[2]; my $got_val_4 = $_[3]; print "Got these from values from the sub first::: *$got_val_1* an +d *$got_val_2* and *$got_val_3* and *$got_val_4* - Done!!!<br>\n"; print "<a href=\"pass.pl?tran=\">back</a>\n"; }

Replies are listed 'Best First'.
Re^2: Passing Sub Values
by Anonymous Monk on Mar 21, 2008 at 16:57 UTC
    Almost, the values on the second sub should only show up after you click on the "Edit X" link on the sub first.
      Changing this,
      #my $tran = 'edit'; #param("tran"); my $tran = param("tran");

      works!
Re^2: Passing Sub Values
by Anonymous Monk on Mar 21, 2008 at 17:31 UTC
    There is a problem, when you run this it is also bringing the rest of the stuff from the first sub, the ideal thing would be to just print the values been passed from sub first like:  return ($arg_1,$arg_2,$val_3,$val_4); and what ever else is in the sub second.
      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"; }