你如何读入数组中的参数

时间:2015-03-12 07:59:34

标签: arrays perl command-line passwords arguments

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

这就是我试过的

#!/usr/bin/perl

use strict;
use warnings;

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

2 个答案:

答案 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 = <>;