use strict sub foo { bar(1); bar(2); bar(4); } sub bar { print $_[0] . "bar----------\n"; my $x = 0 if 1 == 2; defined $x ? print $x : print '$x und'; print "\n"; my $y; $y = 0 if 1 == 2; defined $y ? print $y : print '$y und'; print "\n"; $x = $_[0]; $y = $_[0]; bar(3) if $_[0] == 2; } foo();