Programmieren mit PERL

Arbeiten mit Unterprogrammen

von Roland Bernert, R egionaler Arbeitskreis Internet am Oberschulamt Karlsruhe

Einfachster Fall
ohne Wertübergabe
#! /usr/bin/perl
# B e i s p i e l  f u e r  U n t e r p r o g r a m m e
# =====================================================
sub zaehle {                    # kann auch am Ende stehen
  my $i;                        # locale Variable $i
  for ($i=1; $i<=10; $i++ ) {   # von 1 bis 10
     $summe=$summe+$i;
  }
}
# ---------------- Das Hauptprogramm -----------------------
$summe=0;
&zaehle;                        # Aufruf des Unterprogramms :
print "Die Summe betraegt: $summe\n";
print "$i\n";                   # $i ist hier nicht definiert->Leerzeile
$probe=$i+20; print "$probe\n"; # Im Zahlenkontext aber = 0
   
Wertübergabe ans Unterprogramm
 #! /usr/bin/perl
# B e i s p i e l  f u e r  U n t e r p r o g r a m m e
# m i t  V a r i a b l e n u e b e r g a b e
# =====================================================
sub wandle {                    # kann auch am Ende stehen
  local(@liste)=@_;             # locale Variable $i
     $liste[1]="Rechner";       # hier wird die Liste geaendert
     print "Jetzt bin ich im Unterprogramm !\n";
     foreach $listeninhalt (@liste) { print "$listeninhalt "; }
  print "\n";
}

# ---------------- Das Hauptprogramm -----------------------
@liste=(Test, Computer, Perl);
&wandle(@liste);                # Aufruf des Unterprogramms :
print "Jetzt wieder im Hauptprogramm !\n";
foreach $listeninhalt (@liste) { print "$listeninhalt "; }
print "\n"; 
Aufruf als Funktion
- Werte zurückgeben.
 #! /usr/bin/perl
# B e i s p i e l  f u e r  U n t e r p r o g r a m m e
# m i t  V a r i a b l e n u e b e r g a b e
# =====================================================
sub wandle {                      # kann auch am Ende stehen
  local(@liste)=@_;               # locale Variable $liste, @_ ist Uebernahme
     $liste[1]="Rechner";         # hier wird die Liste geaendert
     print "Jetzt bin ich im Unterprogramm !\n";
     foreach $listeninhalt (@liste) { print "$listeninhalt "; } # alles ausgeben
  print "\n";
  return $liste[1];               # dieser Wert wird zurueckgegeben
}

# ---------------- Das Hauptprogramm -----------------------
@liste=(Test, Computer, Perl);
$rueckgabewert=&wandle(@liste);   # Aufruf des Unterprogramms als Funktion
print "Jetzt wieder im Hauptprogramm !\n";
foreach $listeninhalt (@liste) {  # urspruengliche Liste ausgeben
   print "$listeninhalt "; 
} 
print "\n\n";
print "Rueckgabewert: $rueckgabewert\n";
 

10.07.1997 Roland Bernert