Thread prototypen und objekte in perl: verständnisfrage (6 answers)
Opened by supersucker at 2005-07-05 04:40

Crian
 2005-07-05 13:25
#55986 #55986
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Die Prototypen in Perl sind so etwas wie Schablonen. Jedenfalls nicht das, was man sich unter Prototypen vorstellt, wenn man aus der C/C++-Ecke kommt.

In den einfachen Fällen fängst Du damit Probleme ab, wenn jemand eine Funktion mit der falschen Anzahl Parameter aufruft.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub funktion ($;$) {
my $bla = shift;
my $blubb = shift || '';

...
}

...

funktion(); # Fehler !
funktion('A'); # OK
funktion('A', 'B'); # OK
funktion('A', 'B', 'C'); # Fehler!


Aber es geht auch interessanter:

Code: (dl )
1
2
3
4
5
6
7
8
9
sub machwas (\@\@) {
my ($arrayref1, $arrayre2) = @_;
....
}

my @a = 0 .. 9;
my @b = 'a' .. 'f';

machwas(@a, @b);


Was Dein Buch meint ist vermutlich folgendes:

Code: (dl )
1
2
3
4
5
6
7
8
sub f ($) { print $_[0], "\n"; }
sub g { print $_[0], "\n"; }

f("Hallo"); # ok
f "Hallo"; # ok

g("Hallo"); # ok
g "Hallo"; # Fehler!


In OO-Modulen werden Prototypen allerdings ignoriert.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread prototypen und objekte in perl: verständnisfrage