我正在尝试读取我作为命令行参数传递给perl程序的文件内容
错误:
[localhost@dharm myPerlCodes]$ perl data.pl m
FILE NAME IS ==
Could not read from , program halting. at data.pl line 31.
CODE:
sub get_record {
# the file_data should be passed in as a parameter
my $file = shift;
print "FILE NAME IS == $file\n";
open(FILE, $file) or die "Could not read from $file, program halting.";
# read the record, and chomp off the newline
chomp(my $record = <FILE>);
close FILE;
return $record;
}
$text = &get_record();
print "text in given file is = $text\n";
我做错了什么?
答案 0 :(得分:4)
您应该将文件名传递给get_record,例如:
$text = &get_record(shift @ARGV);
在子程序内移位获取传递给子程序的参数(@_);只有在子程序之外才能获得命令行参数。
答案 1 :(得分:2)
在函数外部,shift
返回脚本的下一个参数,但在函数内部返回下一个参数。
您需要将参数传递给get_record
函数:$text = &get_record(shift);
答案 2 :(得分:0)
如果要读取作为参数传递的文件的内容,则无需执行任何操作。该文件将自动在<>
中提供。此外,除非您正在处理原型(并且您不应该这样做),否则无需使用&
。
sub get_record {
chomp( my $record = <> );
return $record;
}
my $text = get_record();