Schrift
[thread]7280[/thread]

variable sub

Leser: 6


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Strazke
 2005-09-15 21:11
#58051 #58051
User since
2005-07-11
120 Artikel
BenutzerIn
[default_avatar]
Hallo, kann mir jemand sagen, wie ich eine variable sub aufrufen kann? so nach dem Motto:

Code: (dl )
1
2
if (defined $x)) {
&($x));}
Gast Gast
 2005-09-15 21:37
#58052 #58052
Versuch mal
Code: (dl )
$codereference->( @parameters );

Ich würde übrigens nicht prüfen, ob die Variable definiert ist, sondern ob eine Code-Referenz enthalten ist.
[E|B]
 2005-09-15 22:27
#58053 #58053
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Was ist bei dir eine variable Sub?

Code: (dl )
1
2
3
4
5
6
my $sub = sub { print "Ich bin eine Sub!" };
if(ref($sub) eq "CODE"){
&$sub;
}else{
print "Ich bin keine Sub!";
}
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Strazke
 2005-09-16 01:26
#58054 #58054
User since
2005-07-11
120 Artikel
BenutzerIn
[default_avatar]
eigentlich meine ich das so, dass ich eine funktion definiere. Dann habe ich eine Variable, die den Funktionsnamen enthält. Und dann mit &$funtionsname die funktion aufrufen.
pq
 2005-09-16 02:10
#58055 #58055
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
if (my $code = main->can($subname)) {
 $code->();
}
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
Strazke
 2005-09-16 02:58
#58056 #58056
User since
2005-07-11
120 Artikel
BenutzerIn
[default_avatar]
Kannst du mir mal bitte sagen, was can macht? Bei perldoc -f can gibts nix und er meckert bei mir:

Usage: UNIVERSAL::can(object-ref, method) at ...
esskar
 2005-09-16 03:23
#58057 #58057
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
dann benutzt du es falsch

Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;

sub foo {
print "foo\n";
}

if(my $code = main->can('foo')) {
$code->();
}
Strazke
 2005-09-16 04:19
#58058 #58058
User since
2005-07-11
120 Artikel
BenutzerIn
[default_avatar]
Das ist komisch:
$x=$cgi->param("x");
funktioniert und wenn ich $cgi->param direkt einsetzt, funktioniert es nicht
esskar
 2005-09-16 10:30
#58059 #58059
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
param gibt glaube ich für diesen fall (array-kontext) ein array zurück; deswegen die meckerei
format_c
 2005-09-16 11:49
#58060 #58060
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Könnte man dafür nicht auch symbolische Referenzen nehmen?
Code: (dl )
1
2
3
no strict 'refs';
&{$func};
use strict;


Gruß Alex
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-09-15 21:11.