如何将参数读入数组

How do you read an argument into an array

我不确定如何将参数的内容发送到数组。假设 $ARGV[1] 是一个 csv 文件。我想将该文件的内容读入 perl 脚本中的数组。

这是我试过的

#!/usr/bin/perl

use strict;
use warnings;

@array = <$ARGV[1]>;
print $array;

如果你想通过second命令行参数读取文件你可以使用$ARGV[1]。但是如果你在第一个参数中设置文件名,你应该使用 $ARGV[0]。然后你应该通过函数open得到一个文件处理程序来读取文件。

工作示例:

#!/usr/bin/perl

use strict;
use warnings;

my (@array, $fh);
open($fh, '<', $ARGV[0]) or die('Can\'t open file ' . $ARGV[0]);
@array = <$fh>;
print @array;

PS。如果您想解析 csv 字段,请阅读 this

<$ARGV[1]> 不起作用,因为 $ARGV[1] 是一个字符串,而不是文件句柄,并且必须在文件句柄上使用 <> 运算符。

在一般情况下,您可以使用 open 解决此问题,但 Perl 具有读取命令行中提供的文件的特殊魔力。具体来说,单独使用 <> 将 return 命令行中命名的文件中的行,如果命令行未提及任何文件,则回退到从 STDIN 读取。

因此,要读取命令行中命名的所有文件的内容,只需

my @array = <>;