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

为什么没有$ARGV [0]由??文件名初始化我通过这个perl一个班轮?

发布时间:2020-12-15 22:00:07 所属栏目:大数据 来源:网络整理
导读:我有一个perl一个线程,应该将xml文件中的每个单独的行导出到它自己的单独的文件,其中包含原始文件的名称,然后是该文件所在的行号. 例如,如果xml文件被称为“foo.xml”,它有100行,那么我想要有一个名为“foo_1.xml”,“foo_2.xml”,“foo_3.xml”等的一百个文
我有一个perl一个线程,应该将xml文件中的每个单独的行导出到它自己的单独的文件,其中包含原始文件的名称,然后是该文件所在的行号.

例如,如果xml文件被称为“foo.xml”,它有100行,那么我想要有一个名为“foo_1.xml”,“foo_2.xml”,“foo_3.xml”等的一百个文件.

我认为我传给一个班轮的文件的名称可以通过ARGV获得,但不是.当我运行这个时,我收到$ARGV [0]中的“未初始化的值”:

perl -nwe 'open (my $FH,">","$ARGV[0]_$..xml"); print $FH $_;close $FH;' foo.xml

我俯瞰什么?

解决方法

当使用魔术 <>文件句柄(您使用-n选项进行隐式处理)时,Perl会将文件名从 @ARGV开始移开. (这是在 perlop中提到的).您需要使用包含当前正在读取的文件名的plain标量 $ARGV
perl -nwe 'open (my $FH,"${ARGV}_$..xml"); print $FH $_;close $FH;' foo.xml

(大括号是必需的,因为$ARGV_是变量的合法名称.)

(编辑:李大同)

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

    推荐文章
      热点阅读