my $a = 2;
my @arr = (1, 2, 3, 4);

print 'Vor Iteration: @arr = ', join(",",@arr), "\n";

# Listeniteration mit $_ 
# ~~~~~~~~~~~~~~~~~~~~~~~
foreach (@arr) 
  {
  $_ = $_ + 2;
  }
print 'Nach Iteration: @arr = ', join(",",@arr), "\n";

print 'Start: $a = ', $a, "\n";

# Diese Funktion aendert @_
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
sub call_by_reference 
  {
  $_[0] = 3;
  }

call_by_reference($a);
print 'Nach call_by_reference: $a = ', $a, "\n";

# diese Funktion aendert den Parameter nicht
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub call_by_value
  {
  my $x = $_[0]; # alternativ: my $x = shift;  
  $x = 3;
  }

call_by_value($a);
print 'Nach call_by_value: $a = ', $a, "\n";
