如何将文件名传递给perl中的子程序?
发布时间:2020-12-16 06:07:12 所属栏目:大数据 来源:网络整理
导读:我正在写一个perl脚本,我想将输出文件的文件名传递给子程序. 我试过这样的事情: use strict;use warnings;test("Output.dat");sub test { my $name = @_; open(B,"$name") or die "Failure n"; print B "This is a test! n"; close(B); } 我将多次使用子
我正在写一个perl脚本,我想将输出文件的文件名传递给子程序.
我试过这样的事情: use strict; use warnings; test("Output.dat"); sub test { my $name = @_; open(B,">$name") or die "Failure n"; print B "This is a test! n"; close(B); } 我将多次使用子程序,所以我必须传递文件名,不能在子程序中声明它. 我希望你能帮帮我 :) 解决方法
你的问题是这一行:
my $name = @_; 您正在为标量变量分配数组.在Perl中,这将为您提供数组中元素的数量 – 所以我希望您在$name中以“1”结尾. 有许多方法可以从数组中获取第一个元素; my $name = $_[0]; # Explicitly get the first element my $name = shift @_; # Get the first element (and remove it from the array) my $name = shift; # Same as the previous example - shift works on @_ by default in a subroutine my ($name) = @_; # The parentheses make it into a list assignment 最后两个是你最常见的那些. 还有几点: 1 /如果在错误消息中包含$name,您将获得更好的问题线索. open(A,">$name") or die "Failure: $name n"; 或者,更好的是,Perl从您的操作系统获取的错误消息. open(A,">$name") or die "Could not open $name: $!n"; (我已经添加了丢失的逗号 – 我认为这是一个错字.) 2 /这一天,使用三arg版本的open和lexical文件句柄通常被认为是一种好习惯. open(my $output_fh,'>',$name) or die "Failure: $name n"; 3 /在您的示例中,您打开一个名为“A”的文件句柄,但然后尝试写入名为“B”的文件句柄.这是拼写错误吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |