在Perl中创建循环中的数组
我正在尝试创建一个数组,其中包含for循环中的一些数据。下面代码中的regex命令帮助我收集要放入其中的标量。据我所知,这是正确的,但是当我尝试将@output数组输出到CSV文件时,我收到一个“不能使用string()作为数组引用,而使用“strict refs”。错误。这是因为我创建数组的方式,还是因为我试图将其写入文件的方式在Perl中创建循环中的数组,perl,csv,Perl,Csv,我正在尝试创建一个数组,其中包含for循环中的一些数据。下面代码中的regex命令帮助我收集要放入其中的标量。据我所知,这是正确的,但是当我尝试将@output数组输出到CSV文件时,我收到一个“不能使用string()作为数组引用,而使用“strict refs”。错误。这是因为我创建数组的方式,还是因为我试图将其写入文件的方式 foreach my $row(@input){ my @cmd = qx("command"); foreach my $line(@cmd){
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 ($!)";
这将四个标量推送到
@输出上:
push(@output, ($sp_name, $sp_port, $sp_type, $sp_uid));
括号除了无用地控制优先级外,什么也不做。使用方括号:
push @output, [ $sp_name, $sp_port, $sp_type, $sp_uid ];
创建一个数组并返回对它的引用。这将四个标量推送到@output
:
push(@output, ($sp_name, $sp_port, $sp_type, $sp_uid));
括号除了无用地控制优先级外,什么也不做。使用方括号:
push @output, [ $sp_name, $sp_port, $sp_type, $sp_uid ];
创建一个数组并返回对它的引用。应用下面提到的固定值后,将\@{$row}
更改回更简单的$row
。应用下面提到的固定值后,将\@{$row}
更改回更简单的$row
。