Ich bin bestürzt. OK, also das war wahrscheinlich am meisten SpaßPerl Bug, den ich je gefunden habe. Sogar heute lerne ich neue Dinge über Perl. Im Wesentlichen wird der Flip-Flop-Operator ..
die zurück falsch, bis die linke-Seite zurück wahr und dann wahr, bis die rechte Seite zurück falsch globalen Zustand halten (oder das ist, was ich angenommen.)Ist Perls Flip-Flop-Operator abgehört? Es hat einen globalen Status, wie kann ich es zurücksetzen?
Kann ich es zurücksetzen (vielleicht wäre das eine gute Ergänzung zu Perl 4-esque kaum jemals verwendet reset()
)? Oder gibt es keine Möglichkeit, diesen Operator sicher zu verwenden?
Ich sehe das auch nicht (das globale Kontext Bit) dokumentiert irgendwo in perldoc perlop
ist das ein Fehler?
-Code
use feature ':5.10';
use strict;
use warnings;
sub search {
my $arr = shift;
grep { !(/start/ .. /never_exist/) } @$arr;
}
my @foo = qw/foo bar start baz end quz quz/;
my @bar = qw/foo bar start baz end quz quz/;
say 'first shot - foo';
say for search \@foo;
say 'second shot - bar';
say for search \@bar;
Spoiler
$ perl test.pl
first shot
foo
bar
second shot
Gute Frage! Sieht so aus, als würde es sich wie eine Schließung verhalten. – Demosthenex
Oh, ich traf dies - ich schrieb eine Funktion mit dem Flipflop, rief es zweimal und das zweite Mal hatte es den Zustand von der ersten erhalten. meine App kaputt gemacht! –
Wow, ich wusste nie, dass 'reset' existiert hat. ++ nur dafür. :) – friedo