将文件存储在哈希中 - 仅存储第一行?

时间:2016-02-25 01:10:52

标签: perl hash

我正在尝试读取文件并将其存储到哈希中。当我打印出哈希的内容时,只从文件存储的第一行开始。

#!/usr/local/bin/perl

use strict;
use warnings;

use Data::Dump;

local $/ = "";
my %parameters;


open(my $PARAMS, 'SimParams.conf')
    or die "Unable to open file, $!";


while(<$PARAMS>) {
       my @temp = split(/:\s*|\n/);
       $parameters{$temp[0]} = $temp[1];
  }




dd(\%parameters);

exit 0

dd(\%parameters)仅显示文件的第一行作为键和值。如何在这个哈希中将所有3行作为键和值配对?

编辑:SimParams文件按要求:

RamSize: 1000
PageSize: 200, 200
SysClock: 1

datadump给出输出:

{ RamSize => "1000\r" }

2 个答案:

答案 0 :(得分:3)

该行

local $/ = "";

将您的3行文件读为1个块,即整个文件。如果删除该代码,则应创建哈希值。

您应该选择输入以删除换行符。将其放入代码中,然后再拆分为@temp

chomp;

鲍罗丁最能解释local $/ = "";的作用。

答案 1 :(得分:2)

$/设置为空字符串可启用段落模式。每次从$PARAMS读取(因为它是一个局部变量,它应该是$params),您将获得下一个数据块,直到遇到空行

您的数据看起来没有空行,因此读取将返回文件的全部内容

您没有说明为什么修改了$/的值,但看起来只是删除该分配会让您的代码正常运行