for ループにいくつかのデータを含む配列の配列を作成しようとしています。以下のコードの正規表現コマンドは、配置するスカラーを収集するのに役立ちます。私が知る限り、それは正しいのですが、@output 配列を CSV ファイルに出力しようとすると、「"strict refs" が使用されている間は、ARRAY ref として string () を使用できません」というメッセージが表示されます。エラー。これは、配列を作成する方法またはファイルに書き込もうとしている方法によるものですか?
foreach my $row(@input){
my @cmd = qx("command");
foreach my $line(@cmd){
if($line =~ /regex/){
push(@output, ($sp_name, $sp_port, $sp_type, $sp_uid));
}
}
}
以下のコードは、出力ファイルを作成するために使用しているものです::
my $csv = Text::CSV->new()
or die "Cannot use Text::CSV ($!)";
my $file = "output.csv";
open my $fh, '>', $file
or die "Cannot open $file ($!)";
$csv->eol("\n");
foreach my $row (@output)
{
$csv->print($fh, \@{$row})
or die "Failed to write $file ($!)";
}
close $fh
or die "Failed to close $file ($!)";