fork(1) download
  1. use strict;
  2. use warnings;
  3.  
  4. our ($a, $b, $c, $d) = (0, 0, 0, 0); # global variables initialized to undef
  5.  
  6. sub g1 {
  7. my ($b_param, $c_param) = @_;
  8. print "$a $b_param $c_param $d\n";
  9. }
  10.  
  11. sub g2 {
  12. my ($a_param, $c_param) = @_;
  13. local $a = $a_param; # dynamic
  14. local $c = $c_param;
  15. g1($a, $c);
  16. }
  17.  
  18. sub g3 {
  19. my ($c_param, $a_param) = @_;
  20. local $a = $a_param;
  21. local $c = $c_param;
  22. local $b = 3;
  23.  
  24. g1($a, $b);
  25.  
  26. {
  27. local $c = 8;
  28. local $d = 4;
  29. g2($a, $b);
  30. }
  31.  
  32. g1($a, $b);
  33.  
  34. return $b;
  35. }
  36.  
  37. sub main {
  38. my ($main_a, $main_b);
  39. $main_a = 4;
  40. $main_b = 5;
  41.  
  42. $main_a = g3($main_b, $c);
  43. g3($main_b, $main_a); # return value ignored
  44. }
  45.  
  46. main();
  47.  
Success #stdin #stdout 0.01s 5512KB
stdin
Standard input is empty
stdout
0 0 3 0
0 0 3 4
0 0 3 0
3 3 3 0
3 3 3 4
3 3 3 0