我正在尝试读取文件并将其存储到哈希中。当我打印出哈希的内容时,只从文件存储的第一行开始。
#!/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" }
答案 0 :(得分:3)
该行
local $/ = "";
将您的3行文件读为1个块,即整个文件。如果删除该代码,则应创建哈希值。
您应该选择输入以删除换行符。将其放入代码中,然后再拆分为@temp
。
chomp;
鲍罗丁最能解释local $/ = "";
的作用。
答案 1 :(得分:2)
将$/
设置为空字符串可启用段落模式。每次从$PARAMS
读取(因为它是一个局部变量,它应该是$params
),您将获得下一个数据块,直到遇到空行
您的数据看起来没有空行,因此读取将返回文件的全部内容
您没有说明为什么修改了$/
的值,但看起来只是删除该分配会让您的代码正常运行