Schrift
[thread]11093[/thread]

Kann ich das? (Seite 2)



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Strat
 2008-01-07 16:25
#104460 #104460
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
renee+2008-01-07 12:29:15--
Das ist eine Philosophiefrage. Wie sid burn es gesagt hat, ist heute eher die Regel, das & wegzulassen. Strat verwendet z.B. das & um Subroutinen aus anderen Modulen herauszustellen (oder war es anders herum?)...


andersherum...

aber ich komme auch immer mehr in die Richtung, es einfach wegzulassen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
sid burn
 2008-01-07 19:50
#104468 #104468
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Es hat noch einen anderen Grund. Wenn du die Subroutine mit einen Ampersand aufrufst, dann wird automatisch @_ als Argumentenliste übergeben. Wenn du zwar ein () anhängst dann übergibst du zwar wieder explizit eine Leere liste, aber wenn du es vergisst übergibst du halt @_.

Wenn du innerhalb einer Subroutine bist und @_ z.B. nicht leerst. (weil du z.B: so wie ich immer my ($var1, $var2, ... ) = @_) nutzt. Dann kann das zu einem Fehlverhalten führen.

Einen Fehlverhalten was möglicherweise gar nicht mal so schnell ersichtlich ist. Daher lieber gleich ganz weg lassen und immer nur Klammern am ende nutzen.

Code: (dl )
1
2
3
4
5
6
7
8
@_ = qw/ hallo welt /;

&foo;
foo();

sub foo {
print @_, "\n";
}
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2008-01-07 20:30
#104470 #104470
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber auch nicht ganz vergessen, dass es das gibt. Das braucht man nämlich - wie von sid burn schon gesagt hat - wenn man Referenzen auch bestehende Subroutinen erstellen will oder mit goto eine Funktion "anspringen" will...
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/
Strat
 2008-01-08 16:38
#104486 #104486
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
sid burn+2008-01-07 18:50:13--
Es hat noch einen anderen Grund. Wenn du die Subroutine mit einen Ampersand aufrufst, dann wird automatisch @_ als Argumentenliste übergeben. Wenn du zwar ein () anhängst dann übergibst du zwar wieder explizit eine Leere liste, aber wenn du es vergisst übergibst du halt @_.

Subroutinen rufe ich immer mit Klammern auf, von daher stellt sich dieses Problem nicht. Und wenn ich - ausser bei goto - will, dass @_ uebergeben wird, dann uebergebe ich es explizit, z.B. &sub( @_ ); die Schreibweise &sub; finde ich haesslich.
Nur bei Methodenaufrufen lasse ich die Klammern weg, wenn keine Parameter uebergeben werden, z.B. $myService->stop;
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-01-03 19:38.