Leser: 3
![]() |
|< 1 2 >| | ![]() |
20 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
use warnings;
foo('bar','test');
sub foo{
print "foo: @_ \n";
&test;
}
sub test{
print "test: @_ \n";
}
1
2
3
4
5
6
7
8
9
10
11
12
sub add_method {
my $self = shift;
my $name = shift;
die unless $name and $name =~ /^\w+$/;
my $sub = sub {
my $self = shift;
my $item = $name;
return [ @{ $self->{items} }, $item ];
};
no strict 'refs';
*{$name} = $sub;
}
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
#!/usr/bin/perl
use strict;
use warnings;
$, = ': ';
$" = ', ';
foo('bar','test');
print "foo returned to top level\n";
fuu('bar','test');
print "fuu returned to top level\n";
sub foo{
print "foo(@_) called by ";
print caller;
print "\n";
&test;
print "test returned to foo\n";
}
sub fuu{
print "fuu(@_) called by ";
print caller;
print "\n";
goto &test;
print "test returned to fuu\n";
}
sub test{
print "test(@_) called by ";
print caller;
print "\n";
}
1
2
3
4
5
6
7
8
% perl test.pl
foo(bar, test) called by main: test.pl: 9
test(bar, test) called by main: test.pl: 19
test returned to foo
foo returned to top level
fuu(bar, test) called by main: test.pl: 12
test(bar, test) called by main: test.pl: 12
fuu returned to top level
Quotemit dem goto kann man "beeinflussen", welches @_ genommen wird, aber allein die Tatsache dass die Parameter automatisch übergeben werden, kann auch goto erreicht werden. Das ist also kein wirkliches Argument für goto.
Quotemit dem goto kann man "beeinflussen", welches @_ genommen wird, aber allein die Tatsache dass die Parameter automatisch übergeben werden, kann auch goto erreicht werden. Das ist also kein wirkliches Argument für goto.
Quote
[...]
Das Zusätzlich noch @_ übergeben wird, habe ich so noch genannt. Ob goto diese Funktionalität nochmals zusätzlich bietet oder ob jetzt nur das & vor der Funktion dafür zuständig ist, ist mir ehrlich gesagt aber auch ziemlich egal.
Funktionen müssen bei goto mit & aufgerufen werden (sonst wären es LABEL) und & bietet diese Funktionalität an sich auch schon. Von daher ist es doch volkommen Wurst wer jetzt genau @_ übergibt, oder? ;)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use warnings;
use strict;
{ package foo;
my $name = 'hallo';
my $subref = sub {
print "Hallo, Welt!\n";
};
no strict 'refs';
*{'main::'.$name} = $subref;
}
package main;
hallo();
![]() |
|< 1 2 >| | ![]() |
20 Einträge, 2 Seiten |