我有一个将文件句柄作为参数的子例程。如何从命令行上指定的文件路径创建文件句柄?我不想自己对这个文件做任何处理,我只想把它传递给另一个子程序,它返回一个包含文件中所有解析数据的哈希数组。
这是我使用的命令行输入的样子:$ ./getfile.pl /path/to/some/file.csv
这是我正在调用的子程序的开头部分:
sub parse {
my $handle = shift;
my @data = <$handle>;
while (my $line = shift(@data)) {
# do stuff
}
}
最佳答案
命令行参数在预定义的 @ARGV
中可用大批。您可以从那里获取文件名并使用 open
打开它的文件句柄。假设您想要对该文件进行只读访问,您可以这样做:
my $file = shift @ARGV;
open(my $fh, '<', $file) or die "Can't read file '$file' [$!]\n";
parse($fh);
请注意
or die...
查看电话open
成功,如果不是,则以错误消息死亡。内置变量$!
将包含失败时的(依赖于操作系统的)错误消息,告诉您调用不成功的原因。例如“没有权限。”
关于perl - 如何从命令行获取文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/189293/