理解一段Perl代码

时间:2014-01-30 00:33:01

标签: perl komodo

我从未完成过perl编程,但是我正在考虑使用Perl代码,这让我很困惑:

sub read_pds
{
   my $bin_s;
   my $input_pds_file = $_[0];
  open(my $fh, '<', $input_pds_file) or die "cannot open file $input_pds_file";
  {
    local $/;
    $bin_s = <$fh>;
  }
  close($fh);
  return $bin_s;
}

我正在查看上面的代码,虽然它不会返回任何值,因为那里没有定义返回类型。

但是在底部它返回一个值。现在我怎么知道值的类型是什么,因为当我使用Komodo在其上添加监视时它没有显示任何值。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

Perl没有您考虑的类型,但返回的值将是一个字符串($input_pds_file的内容。<$fh>从{{读取单行/记录1}},因为$fh(输入记录分隔符)设置为$/,这将是整个文件。

答案 1 :(得分:1)

获取传递给函数调用的第一个参数:

my $input_pds_file = $_[0];

打开文件阅读:

open(my $fh, '<', $input_pds_file) or die "cannot open file $input_pds_file";

将输入记录分隔符设置为无(默认为新行序列:CR或LF或CRLF):

local $/;

将整个文件读取到变量:

$bin_s = <$fh>;

为什么要一次读取整个文件?因为“钻石运营商”:&lt;&gt;从句柄读取数据,直到找到输入记录分隔符(在上面清除)。

最后,返回一个大字符串:

return $bin_s;