4
私は、現在の行がファイルの目的のセクション内にあるかどうかを示すために状態変数を使って、ファイルの中央セクションを印刷するために1ライナーを使用したいと思います。しかし、私は状態変数を初期化することができません。初期化はとてもシンプルで、問題の内容がわかりません。助けてください。ありがとう。perl6状態変数を初期化できません。助けが必要
ファイルは名前TESTFILE.TXTで、次の行があります。
section 0; state 0; not needed
= start section 1 =
state 1; needed
= end section 1 =
section 2; state 2; not needed
をそして、私のワンライナーは
cat testFile.txt | perl6 -ne ' state $x = 0; say "$x--> "; if $_ ~~ m/ "start"/{ $x=1; }; if $x == 1 { .say; }; if $_ ~~ m/ "end"/{ $x = 2; }'
され、出力は$ x = 0の初期化を行っていないことを示しました。 :
Use of uninitialized value $x of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block at -e line 1
-->
Use of uninitialized value of type Any in numeric context
in block at -e line 1
Use of uninitialized value $x of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block at -e line 1
-->
= start section 1 =
1-->
state 1; needed
1-->
= end section 1 =
2-->
2-->
、ご使用のケースに応じて、全体のことは、おそらくflip-flop operatorを使用することによって単純化することができることに注意してください!あなたがバグだと思うなら、それを報告するつもりです。私はPerl 6が本当にクールだと思っています。本当にうまくいくと思っています。 Perl6、Scheme(MIT、Racket)、Perl5、Lisp(Clojure)、その他(Python、Java、C、C++、awk、Julia、アセンブリなど) – lisprogtor
なぜ状態変数を使用しても機能しないはずなので、報告してください。私はあまり好きではないいくつかのビットと作品がありますが、Perl6は本当に素晴らしい言語です。現在のところ、実際の使用方法はあまり多くありません。コンパイラのバグに遭遇するのはまだかなり簡単ですが、時間の経過とともにその状況は改善されます... – Christoph
私は間違いなくバグと言いますあなたは 'state $ x // = 0'か' state $ xはデフォルト(0) 'を使います。 –