Schrift
[thread]12248[/thread]

Capturing und $1 (Seite 2)

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
LanX-
 2008-07-25 19:46
#112734 #112734
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
renee+2008-07-25 17:20:00--
oder Du bekommst von den Perl 5 Porters eine Antwort warum das kein Bug ist.

Moment, wozu denen das aufbürden, es ist kein Bug. : )

Nur bei einem Match wird $1 localisiert und gesetzt. Wenns aber kein Match gab wird das globale $1 ausgegeben.

Defun will sich darauf verlassen können, dass $1 leer ist, wenn das ein Bug wäre, könnten wir CPAN umschreiben...
renee
 2008-07-25 19:54
#112736 #112736
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe mir das Problem nicht genauer angeschaut...

Aber grundsätzlich ist es besser, mal eine Meldung zu viel aufgemacht als zu wenig. Klar, mit "normalen" Programmierfragen sollte man nicht kommen...
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/
Linuxer
 2008-07-25 19:58
#112738 #112738
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Ich seh das auch so wie LanX- und keinen Bug... Lasse mich aber auch gerne eines besseren belehren ;o)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
defun
 2008-07-25 20:28
#112747 #112747
User since
2008-07-18
28 Artikel
BenutzerIn
[default_avatar]
Bevor mir das in den Mund gelegt wird: Ich finde es nicht sonderlich toll, dass Perl in zwei Situationen unterschiedlich reagiert, obwohl die Rahmenbedingungen die gleichen sind. Aber damit will ich noch keinen Bug anprangern. Wie gesagt, ich wollte nur mal sehen, ob ich das als einziger so nicht erwartet hätte.

Es ist auch nicht die einzige Situation, in der Perl beim zweiten Durchlauf eines Codes etwas anderes macht als beim ersten: "When $/ is set to "undef", when readline() is in scalar context (i.e. file slurp mode), and when an empty file is read, it returns '' the first time, followed by "undef" subsequently." wäre ein Beispiel aus -f readline. Allerdings ändert sich bei readline natürlich auch der Status vom Handle, was bei meinem Regex nicht der Fall ist.

Wie seht ihr das denn? Produziert mein Beispielscript ein Ergebnis das ihr erwartet hättet oder nicht?

@renee: Beim Debuggen wusste ich selbst nicht, dass es ein \G/gc-Regex war. Daher habe ich diese Information auch nicht mitgegeben. Na ja, es war wohl eine zu offene Frage :)
LanX-
 2008-07-25 20:34
#112748 #112748
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
@defun: wie Moritz dir gleich zu anfang gesagt hat: Man überprüft immer erst den Match bevor man Matchvariablen verwendet. *

Ansosnten setz dich mit local auseinander, um zu verstehen wieso das "alte" $1 überlebt.

* Und zu deinem "Ich weiß das es matcht" brauchen wir nichts mehr kommentieren, oder?
Gast Gast
 2008-07-26 00:29
#112765 #112765
LanX-+2008-07-25 18:34:30--
@defun: wie Moritz dir gleich zu anfang gesagt hat: Man überprüft immer erst den Match bevor man Matchvariablen verwendet. *

Ansosnten setz dich mit local auseinander, um zu verstehen wieso das "alte" $1 überlebt.

* Und zu deinem "Ich weiß das es matcht" brauchen wir nichts mehr kommentieren, oder?

Ich weiß nicht, aber da schleichst du dich schon ziemlich bequem davon, oder? Ich weiß, dass $1 jeweils eine local-Gültigkeit hat. Und wie gesagt, ich sehe nicht ein, dass ein Match gültiger sein soll als genau der gleiche hinterher. Nur weil man das umgehen kann, indem man $1 lediglich bei Erfolg verwendet, heißt das noch nicht, dass Perl sinnvoll handelt. Es könnte ja genauso zu einem Bug kommen, weil Perl einmal beim Regex erfolgreich zurückliefert und beim zweiten mal nicht. Das ist dann zwar leichter zu debuggen, aber trotzdem komisch.

Aber hey, wenn sich niemand daran stört, will ich keinen Radau machen. ICH weiß jetzt ja, was ich bei einem \G/gc-Regex im Falle pos $text == length $text zu erwarten habe. Aber logisch finde ich es nicht. Vielleicht habe ich ja auch irgendwas übersehen oder irgend eine Dokumentation zu dem Thema nicht gelesen.
defun
 2008-07-26 00:30
#112767 #112767
User since
2008-07-18
28 Artikel
BenutzerIn
[default_avatar]
Sorry, dieser "Gast" über mir bin ich.
LanX-
 2008-07-26 00:40
#112769 #112769
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Gast+2008-07-25 22:29:25--
Ich weiß nicht, aber da schleichst du dich schon ziemlich bequem davon, oder?

Du hast natürlich recht, tue ich. Am besten du meldest den "Fehler" bei Perl-Porters, die werden dir sicher recht geben...

Cheerio!
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2008-07-25 02:38.