2

以下の perl エラーが発生します。

Can't use string ("") as a symbol ref while "strict refs" in use at test173 line 30.

以下にコードを貼り付けます。行 30 は open ステートメントです。open ステートメントで失敗しています。スクリプトにuse strict;use warnings;があります。エラーは何を意味しますか? このエラーを解決するためにコードを変更するにはどうすればよいですか?

my $file = 'testdata';
open($data, '<', $file) or die "Could not open '$file'\n";
print "file data id:$data\n"; 
@iu_data = <$data>;
$totalLineCnt = @iu_data;
print "total line cnt: $totalLineCnt". "\n";
4

1 に答える 1

5

以前に $data に値を割り当てていないことを確認してください。たった 3 行で問題を再現できます。

use strict;
my $data = ''; 
open($data, '<', 'test.txt');

たとえば、新しいスコープを作成することで問題を解決できます。

use strict;
my $data = ''; 
{
  my $data;
  open($data, '<', 'test.txt');
  close($data);
}

$dataまたは、使用する前に未定義にすることもできます。

use strict;
my $data = '';
undef $data; 
open($data, '<', 'test.txt');
close($data);

などなど…</p>

于 2012-07-05T00:17:05.650 に答える