Schrift
[thread]5810[/thread]

map und Listen? (Seite 5)

Leser: 2


<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten
pq
 2003-10-19 16:19
#62296 #62296
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Strat,19.10.2003, 00:53]Anmerkung: Bei while ist es jedoch kein Alias. Deshalb sollte man auch, wenn man eine Datei, die man mit while einliest, aufpassen, dass man z.B. in einer Subroutine oder so $_ lokalisiert.[/quote]
natürlich ist bei while (<FH>) {} $_ kein alias. wovon sollte es auch ein
alias sein, schliesslich handelt es sich hier um einen funktionsaufruf, und
ist eigentlich eine verkürzte form von:
while (defined ($_ = <FH>)) {}
aber lokalisierung hat nichts mit aliasen zu tun; deswegen verstehe ich
deinen code auch nicht bzw. ich verstehe nicht, was daran anders wäre,
wenn $_ ein alias wäre.
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
kabel
 2003-10-19 16:56
#62297 #62297
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
imo spielt strat hier an, dass $_ eine globale variable ist.
-- stefan
betterworld
 2003-10-19 18:43
#62298 #62298
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
In Perl6 wird $_ automatisch lokalisiert :)

Vor nicht allzulanger Zeit dachte ich auch noch, dass es bei perl5 ebenso funktioniert, weil es mir so sinnvoll vorkam. Da entstanden dann ein paar seltsame Bugs, die mich dazu fuehrten, die Wahrheit herauszufinden. Hoffentlich habe ich jetzt alle beseitigt :)
pq
 2003-10-19 23:58
#62299 #62299
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=kabel,19.10.2003, 14:56]imo spielt strat hier an, dass $_ eine globale variable ist.[/quote]
das ist klar, lexikalische variablen könnte man ja auch gar nicht lokalisieren.
=)
ich versteh trotzdem noch nicht, was aliase mit lokalisierung zu tun haben,
das sind doch zwei verschiedene dinge...
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
kabel
 2003-10-20 00:18
#62300 #62300
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
war ein schuss ins blaue, weil ich das wort "global" nirgends gelesen habe. ???
-- stefan
Strat
 2003-10-20 01:51
#62301 #62301
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@pq: da besteht kein wirklicher zusammenhang, ausser dass die von manchen Konstrukten - genauso wie my-variablen - als alias auf ein Arrayelement oder so benuetzt werden koennen.
Da man while-Schleifen gerade beim Einlesen der Daten eines Handles oft identisch zu for-Schleifen verwenden kann (ok, skalarer Kontext <=> Listenkontext), dachte ich, ich schreibe oben besser hin, dass das bei while nicht der Fall ist. Das Beispiel habe ich leider unguenstig gewaehlt; besser waere sowas gewesen wie:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use warnings;
...
foreach (@liste) {
 print "VORHER: $_\n";
 # z.B. Datei oeffnen
 while (<FH>) {
   print "WHILE: $_";
 }
 print "Nachher: $_\n";
}
print "$_\n";

waere ein viel besseres beispiel gewesen\n\n

<!--EDIT|Strat|1066600378-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2003-10-20 02:07
#62302 #62302
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Strat,19.10.2003, 23:51]
[...]
waere ein viel besseres beispiel gewesen[/quote]
ok, darauf wolltest du hinaus. das beispiel hier ist in der tat viel besser,
nämlich "while <FH>" innerhalb von "for()". du hattest es im ersten beispiel
im prinzip nur verkehrt herum =)\n\n

<!--EDIT|pq|1066601276-->
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
Strat
 2003-10-20 16:53
#62303 #62303
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich werde alt...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2003-10-20 17:46
#62304 #62304
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ja ok, überzeugt :-D (bezog sich auf den letzten Beitrag auf Seite 1 ... ich werde auch alt ^^

Ich bin nur immernoch manchmal verwirrt, dass man in einer for-Schleife der Art

Code: (dl )
1
2
3
for my $element (@array) {
   $element .= '_blubb';
}


den Inhalt von @array verändert.
Dabei ist das ja nur eine elegantere Form des Durchlaufens um einem das Indexgehampel zu ersparen. Aber als ich map kennenlernte, da dachte ich, map sei für das da, wofür man halt auch for verwendet.

Ich hatte mir gemerkt "map für das Anwenden von Dingen auf jedes Element eines Arrays". Anscheinend ist das aber nicht so gedacht (oder sollte nicht so gedacht sein). Ich frag mich nur langsam, wofür man es denn dann überhaupt braucht.\n\n

<!--EDIT|Crian|1066658001-->
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
Strat
 2003-10-20 17:56
#62305 #62305
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
grundsaetzlich ist ein map/grep immer ein spezialfall von for(each). hier mal meine Meinung zu dem Thema:

map/grep geht immer ueber die ganze liste
for hat next, last, redo

for(each) ist dazu da, ein array selbst zu veraendern
map ist dazu da, ein array zu kopieren und dabei aenderungen zu machen; spart variablen

grep ist dazu da, ein komplettes array zu filtern; spart variablen, laeuft aber immer ueber das gesammte array
for(each) ist dazu da, teile eines arrays zu filtern und bei bedarf frueher abzubrechen (last)

mit for(each) kann man auch benannte Laufvariablen (also was anderes als $_) benuetzen\n\n

<!--EDIT|Strat|1066658266-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 4 5 6 >| >> 52 Einträge, 6 Seiten



View all threads created 2003-10-08 15:36.