这个Perl脚本实现了什么?

ran*_*ght 4 perl

我正在阅读别人写的Perl脚本,我对Perl不太熟悉所以有人能让我知道前三行做了什么?

my $ref = do($filename);
$ref != 0 or die "unable to read/parse $filename\n";
@varLines=@{$ref};
foreach $ord (@varLines)
{
    # code here
}
Run Code Online (Sandbox Code Playgroud)

$filename获取命令行参数设置之后,这是在程序的开头

传递给此脚本的文件格式为

[
  {
    "Key1" => "val1",
    "key2" => " "A",
  },
  {
    "Key3" => "val2",
    "key4" => " "B",
  },
]
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 12

它这样做:

  • my $ref = do($filename)在名称为$filename(ref)的文件中执行Perl代码,并分配给$ref文件中最后一个命令的值
  • $ref != 0 or die …如果最后一个命令$filename不成功,则意图中止(请参阅下面的评论以供讨论)
  • @varLines=@{$ref};假设它$ref是对数组的引用并初始化@varLines为该数组的内容
  • foreach $ord (@varLines) { … }为数组中的每个项执行一些代码$ord,在循环的持续时间内调用每个项

重要的是,这一切都取决于名称所在的文件中的内容$filename.