私はperlを使い慣れていますので、私にご負担ください。Perlグローバル変数が初期化されていません
私はCSVファイルを解析しているスクリプトを持っています。物事をより簡単にデバッグするために、私は状態マシンFSA :: Rulesを使用しています。
今はすべてうまくいっています。私のログは意味をなさないようにする必要があります。私はプログラムがこのように見えるように、行番号を記録する必要があります。
my $line = '';
my $lineCount = 0;
sub do {
...
#CSV opened
...
#State machine stuff happens here
readLine;
if ($line =~ m/.*Pattern*/){
#do stuff
}
}
sub readLine{
$line = <CSV>;
$lineCount ++;
}
しかし、私は$行が初期化されない理由をいずれもが知っ
Use of uninitialized value $line in pattern match (m//) at
次のエラーを取得しますか?おかげさまで
これはエラーを生成するコードではありません。サブルーチン 'do'を呼び出すことは決してありません。サブルーチンには予約語と同じ名前を付けてはいけません。一つは、呼び出すのが非常に面倒です。失敗したコードを表示してください。 'sub $'の中に 'my $ line'をもう一度宣言しますか? – Borodin
$ lineの内容が指定された正規表現と一致しないため、$ line変数は初期化されません。 #!の後ろに 'use strict;'と 'use warnings;'を追加した後、あなたのコードをすべて投稿してください。行(これはスクリプトの最初の行でなければなりません)。 –
@David:すみません?変数が正規表現と一致しない場合、変数は初期化されません。そして、 '#!'行は必要ではなく、望ましくもありません(厳密と警告はありますが)! – Borodin