Schrift
[thread]6487[/thread]

sub und prototype: called to early too check prototype

Leser: 2


<< >> 5 Einträge, 1 Seite
Gast Gast
 2004-08-11 19:47
#85703 #85703
ich habe eine function definiert:
sub test(\%\$\$) { ... }

und rufe die später mittels:
my $value = test(%{$h_ref},${$s_ref},${$s_ref})

auf, aber es kommt das folgende warning:
main:test called too early to check prototype

weiss jemand wie ich das verhindere?
renee
 2004-08-11 20:45
#85704 #85704
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
das hier funktioniert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#! c:\perl\bin\perl

use strict;
use warnings;

sub test($$$); # hier ist der Prototyp

test({name => 'dies'},'ist','ein');

sub test($$$){
my ($hashref,$d,$e) = @_;
print $hashref->{name};
}


Also schon vor dem Aufruf einen Prototypen der Methode anlegen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2004-08-11 23:57
#85705 #85705
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Wenn Du sie wirklich "später" aufrufst, brauchst Du eigenltich den Prototypen nicht. Aber Deine Fehlermeldung lässt darauf schließen, dass Du den Prototyp oder die Definition der Funktion weiter nach vorne im Quellcode verschieben musst.\n\n

<!--EDIT|Crian|1092254305-->
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
renee
 2004-08-12 00:25
#85706 #85706
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, man kann es natürlich auch so machen (Wie Crian schon sagte):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#! c:\perl\bin\perl
use strict;
use warnings;

sub test($$$){
  my ($hashref,$d,$e) = @_;
 print $hashref->{name};
}

test({name => 'dies'},'ist','ein');


Aber ich persönlich habe die Definition der Methoden lieber am Ende des Programms...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pq
 2004-08-12 11:22
#85707 #85707
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich finde es am elegantesten, subs mit prototypen in ein modul auszulagern.
wenn man das per 'use' einbindet, werden die subs früh genug definiert...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 5 Einträge, 1 Seite



View all threads created 2004-08-11 19:47.