我不确定如何将参数的内容发送到数组。假设$ ARGV [1]是一个csv文件。我想在perl脚本中将该文件的内容读入数组。
这就是我试过的
#!/usr/bin/perl
use strict;
use warnings;
@array = <$ARGV[1]>;
print $array;
答案 0 :(得分:2)
如果您想通过 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
答案 1 :(得分:1)
<$ARGV[1]>
无法正常工作,因为$ARGV[1]
是字符串,而不是文件句柄,并且必须在文件句柄上使用<>
运算符。
在一般情况下,您可以使用open
解决此问题,但Perl具有阅读命令行中提供的文件的特殊魔力。具体来说,单独使用<>
将返回命令行中命名的文件中的行,如果命令行没有提及任何文件,则返回读取STDIN
。
因此,要读取命令行中命名的所有文件的内容,它只是
my @array = <>;