如何将参数读入数组
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 = <>;
我不确定如何将参数的内容发送到数组。假设 $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 = <>;