读取参数传递给perl程序的文件内容

时间:2013-11-22 05:59:20

标签: perl file

我正在尝试读取我作为命令行参数传递给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";

我做错了什么?

3 个答案:

答案 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();