加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何从命令行获取文件句柄?

发布时间:2020-12-16 06:10:56 所属栏目:大数据 来源:网络整理
导读:我有一个子程序,它以文件句柄作为参数.如何从命令行上指定的文件路径创建文件句柄?我不想自己对这个文件进行任何处理,我只想把它传递给另一个子程序,它返回一个包含文件中所有解析数据的哈希数组. 这是我正在使用的命令行输入: $./getfile.pl /path/to/som
我有一个子程序,它以文件句柄作为参数.如何从命令行上指定的文件路径创建文件句柄?我不想自己对这个文件进行任何处理,我只想把它传递给另一个子程序,它返回一个包含文件中所有解析数据的哈希数组.

这是我正在使用的命令行输入:

$./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);

请注意,或者…将检查调用打开以获得成功,如果不是,则会返回错误消息.内置变量$!将包含失败时(OS相关的)错误消息,告知您调用未成功的原因.例如“没有权限.”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读