Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [PERL] Parameterhandling bei Perl
Antwort
 
Themen-Optionen
Alt 01.03.2006, 12:33   Nach oben    #1
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.793
Standard [PERL] Parameterhandling bei Perl

Dieses Tutorial wurde geschrieben von: WarrenFaith

Bemerkung: Das im Forum verwendete Syntaxhighlighting für Perl hat einen kleinen Fehler. Bei den in den Skripten benutzen Variablen $#ARGV und $#_ wird das #-Symbol als Kommentarsymbol interpretiert, weshalb der danach folgende Quellcode fehlerhafterweise farblich als Kommentar hervorgehoben wird. Perl selbst erkennt aber, dass es sich in diesen Fällen NICHT um ein Kommentar handelt, auch wenn die Raute (das #-Symbol) sonst ein Kommentar einleitet. Ich bitte dies zu entschuldigen.

Parameterhandling bei Perl

Parameter werden bei Perl sehr einfach benutzt. Gehen wir davon aus, dass dein Perlskript ein paar Parameter übergeben bekommt. Die Parameter werden durch Kommata getrennt. Es muss also beim Aufruf darauf geachtet werden, dass Stringparameter die Leerzeichen enthalten mit " umschlossen sind, damit Perl diese Leerzeichen nicht als Parametertrennung interpretiert. Ein Beispielaufruf könnte dann so aussehen:
Code:
perl skript.pl "Ich bin Parameter 1" parameter2 12345
Beim Aufruf des Skripts werden die Parameter in das Array @ARGV geschrieben und sind dort über den Zahlenindex beginnend bei 0 abrufbar. Das folgende Skript gibt lediglich die Parameter wieder auf den Bildschirm aus.
Perl Code:
  1. #!/usr/bin/perl -w
  2. use strict;
  3.  
  4. #Variablendefinition
  5. my $parameter;
  6.  
  7. #Ausgabe der Parameter
  8. foreach $parameter (@ARGV)
  9. {
  10.     print $parameter."\n";
  11. }
Ausgabe des Skripts wäre mit dem oben genannten Aufruf:
Code:
Ich bin Parameter 1
parameter2
12345
Gelegentlich ist es nützlich herauszufinden, wieviele Parameter dem Skript übergeben werden. Die Zahl des letzten Index im Parameter-Array @ARGV ist in der Variablen $#ARGV gespeichert.
Verlangt das Skript also 4 Parameter, sollte direkt am Anfang überprüft werden, ob es auch 4 Parameter gibt.
Perl Code:
  1. #!/usr/bin/perl -w
  2. use strict;
  3.  
  4. #Variablendefinition
  5. my $parameter;
  6.  
  7. #Ausgabe der Parameter
  8. if($#ARGV != 3)
  9. {
  10.     print "Es sind nur ".($#ARGV + 1)." Parameter uebergeben worden.\n";
  11.     print "Es werden aber 4 benoetigt.\n";
  12. }
Da der Index eines Arrays bei Null beginnt, muss bei einem Vergleich wie im Skript die gewünschte Anzahl also um eins tiefer sein, als tatsächlich gewollt. Index 0 heißt 1 Paramter, Index 1 heißt 2 Parameter und so weiter. Damit die Anzahl bei der Ausgabe der korrekten Parameteranzahl entspricht, muss die Variable $#ARGV um eins erhöht werden. Sind keine Parameter übergeben, so hat die Variable $#ARGV den Wert -1, daher wird auch hier die korrekte Anzahl, sprich 0 (Zahl Null), angezeigt.


Parameterhandling bei Funktionen

Funktionen arbeiten bei Perl ebenfalls mit Parametern, allerdings werden bei Perl die Funktionen nicht wie in den meisten Hochsprachen mit fest definierten Parametern programmiert. Ein normaler Funktionskopf bei Perl sieht wie folgt aus:
Perl Code:
  1. #!/usr/bin/perl -w
  2. use strict;
  3.  
  4. #Variablendefiniton
  5. my $parameter;
  6.  
  7. #Funktion "meine_funktion"
  8. sub meine_funktion
  9. {
  10.     #Durchlauf des Parameterarrays
  11.     foreach $parameter (@_)
  12.     {
  13.         #Ausgabe des Eintrags im @_ Array
  14.         print $parameter." ";
  15.     }
  16. }
  17.  
  18. #Aufruf der Funktion kann so aussehen
  19. &meine_funktion("Hallo", "du", "da");
Ausgabe des Skripts:
Code:
Hallo du da
Wie in dem Skript zu sehen ist, kann eine Funktion mit Parametern aufgerufen werden, obwohl die Funktion selbst keine definiert hat. Demzufolge muss in jeder Funktion überprüft werden, wieviele Parameter übergeben werden und was damit gemacht werden soll. Die Funktionsparameter sind in dem Array @_ gespeichert und können genauso wie das @ARGV Array behandelt werden. In der Variablen $#_ ist ebenfalls der höchste Index des @_ Arrays hinterlegt.

Geändert von Jann Hendrik (05.06.2007 um 10:24 Uhr).
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Perl meckert beim Paketimport Lars Sonstige Programmiersprachen 1 15.08.2006 13:45
[PERL] Dateizugriffe mittels Perl WarrenFaith Tutorials 0 24.02.2006 13:05


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:53 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44