从Perl脚本加载变量定义

时间:2014-08-01 18:26:43

标签: perl

我正在编写Perl脚本,我需要执行以下操作:

  1. 有一个文件,称之为machine_specs

  2. 整个文件包含一个Perl哈希定义,以及相关的键值对,如('word_length' => 64)('os_ver' => 'RHEL Server release 5.8')

  3. 我想将此变量加载到我的脚本中,以便我可以自然地访问这些字段。

  4. 我知道我可以grep FIELD machine_specs并解析输出以获取信息,也许这就是我应该做的。但现在我只想知道如何加载变量定义。我不确定use是否合适,因为这些文件不是真正的模块;它们只是一个字典的文本。

    不失一般性,我们可以假装整个文件是:%report = ('bits' => 64, 'os_ver' => 'RHEL Server release 5.8', 'os_arch' => 'x86_64');

2 个答案:

答案 0 :(得分:5)

如果文件包含有效的perl,您可以使用require将变量拉入脚本。

machine_specs内容:

%report = (
    'bits'    => 64,
    'os_ver'  => "RHEL Server release 5.8",
    'os_arch' => "x86_64",
)

示例脚本内容:

#!/usr/bin/perl

use strict;
use warnings;

our %report;
require "machine_specs";

print "Got $report{bits} bits!\n"; # Got 64 bits!

答案 1 :(得分:0)

这样做你需要做什么吗?

my %report;
eval <DATA>;
print Dumper(\%report);

__DATA__
%report = ('bits' => 64, 'os_ver' => 'RHEL Server release 5.8', 'os_arch' => 'x86_64');