現在、.NETに変換する準備としてPerlスクリプトを文書化しようとしています。今まで私はPerlで以前の経験はありませんでしたが、私は多くのGoogle-fuでそれを乗り越えていました。私はそれが何をしているのか分からないので、私を止めていたコードの一行に遭遇しました。私はそのほとんどを理解することができましたが、作品が欠けていて、それが本当に重要かどうかわかりません。ここでは、コードの行は次のとおりです。eval {}ステートメントのIf()ステートメントの後の空の{}の定義
eval { if(defined $timeEnd && defined $timeStart){}; 1 } or next;
私はdefined
は、彼らがnull
/nothing
/undef
あるかどうかを確認するために、変数$timeEnd
と$timeStart
をチェックしていることを知っています。私はまた、eval
ブロックがTry/Catchブロックとして使用されていて、例外をトラップしていると考えています。コード行はforeach
ループ内にありますので、next
キーワードはforeach
ループの次の繰り返しで引き続き使用されると思います。
私は解読が難しい部分は{};1
ビットです。私の理解は、;
がPerlの文の区切りであり、バックスラッシュでエスケープされていないため、そこで何が行われているのか分かりません。私はまた、{}
の意味を知らない。私は配列と何か関係があると推測しますが、空の配列であり、if()
ブロックの直後に何か特別な意味があるかどうかわかりません。最後に、1
という単一の整数が意味するものは何も意味しておらず、eval
ブロックの最後に何をしているのか分かりません。
誰かがそのコード行を個々の部分とその定義に分解することができたら、私はそれを高く評価します。
ボーナス:私に.NET変換を与えることができ、それぞれのPerlビットがどのように関係しているのか、私はインターネットを尊重します。私は私が今知っているものとVB.NETに変換する方法をここにあります:例外が発生した場合
For each element in xmlList 'This isn't in the Perl code I posted, but it's the `foreach` loop that the code resides in.
Try
If Not IsNothing(timeEnd) AND Not IsNothing(timeStart) then
End If
Catch ex as Exception
Continue For
End Try
Next
'$ timeStart'と' $ timeEnd'はどこから来ますか? –
{}は 'if'の構文の一部です。真の場合には何もしていないだけです。セミコロンは不要ですが、空文が合法であるため、構文エラーではありません。そのため、1と空文の間を区切ります。全体的に、このステートメントはバグ、不完全、またはその両方に見えます。 – ysth
@ el.pescado、それらは 'XML :: LibXML'のxmlノードです –