Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:将数据文件读取为映射_Perl - Fatal编程技术网

Perl:将数据文件读取为映射

Perl:将数据文件读取为映射,perl,Perl,我有如下配置文件: Name=test Password = test 我需要读取数据文件并将其设置为映射,以便设置数据。 现在,我试过这样做 $path_to_file ="C:\\Perl\\bin\\data.txt"; open(FILE, $path_to_file) or die("Unable to open file"); @data = <FILE>; close(FILE);

我有如下配置文件:

 Name=test
 Password = test
我需要读取数据文件并将其设置为映射,以便设置数据。 现在,我试过这样做

        $path_to_file ="C:\\Perl\\bin\\data.txt";
        open(FILE, $path_to_file) or die("Unable to open file");

        @data = <FILE>;
        close(FILE);
        print "data is ",$data[0],"\n";
$path\u to_file=“C:\\Perl\\bin\\data.txt”;
打开(文件,$path_to_文件)或死亡(“无法打开文件”);
@数据=;
关闭(文件);
打印“数据为”、$data[0]、“\n”;
但是我没有得到想要的输出。我得到的输出是Name=test。
有人能提出其他建议吗?。谢谢你的帮助。

试试这样的方法:

# open FILE as usual
my %map;
while (my $line = <FILE>) {
    # get rid of the line terminator
    chomp $line;
    # skip malformed lines.  for something important you'd print an error instead
    next unless $line =~ /^(.*?)\s*=\s*(.*?)$/;
    # insert into %map
    $map{$1} = $2;
}

# %map now has your key => value mapping
say "My name is: ", $map{Name};
#像往常一样打开文件
我的%map;
while(我的$line=){
#去掉线路终止符
chomp$行;
#跳过格式错误的行。对于重要的内容,您应该打印一个错误
下一步除非$line=~/^(.*?\s*=\s*(.*?)$/;
#插入到%map中
$map{$1}=$2;
}
#%map现在具有键=>值映射
说“我的名字是:”,$map{name};

请注意,这允许在等号周围使用空格。您可以轻松地修改它,使其也可以位于行的开头和结尾。

尝试以下操作:

# open FILE as usual
my %map;
while (my $line = <FILE>) {
    # get rid of the line terminator
    chomp $line;
    # skip malformed lines.  for something important you'd print an error instead
    next unless $line =~ /^(.*?)\s*=\s*(.*?)$/;
    # insert into %map
    $map{$1} = $2;
}

# %map now has your key => value mapping
say "My name is: ", $map{Name};
#像往常一样打开文件
我的%map;
while(我的$line=){
#去掉线路终止符
chomp$行;
#跳过格式错误的行。对于重要的内容,您应该打印一个错误
下一步除非$line=~/^(.*?\s*=\s*(.*?)$/;
#插入到%map中
$map{$1}=$2;
}
#%map现在具有键=>值映射
说“我的名字是:”,$map{name};
请注意,这允许在等号周围使用空格。您可以轻松地修改它,使其也可以位于行的开头和结尾。

您可以使用

你可以用


但是,如何以正常的perlish方式从MAPI检索回值:$map{Name}将成为“test”。我会在答案中加上这个,我也试过了。我不明白它的价值。我尝试了以下$map{Name}和$map{“Name”}。但是我没有得到数据。但我看到1美元和2美元都有价值。很抱歉问你。也许这很愚蠢。但是请帮帮我。感谢您,这一切都是区分大小写的$map{NAME}和$map{NAME}不一样。另外,我稍微修复了regexp,因为它有一个空白问题,注意“*?”而不是前面的“*”如果我像上面那样说,我会得到以下错误,字符串出现在hello.pl第30行,靠近“say”我的名字是:“(你需要预声明吗?)hello.pl第30行,靠近“say”我的名字是:”,语法错误由于编译错误,hello.pl的执行被中止。但是,如何以正常的perlish方式从MAPI检索回该值:$map{Name}将成为“test”。我会在答案中加上这个,我也试过了。我不明白它的价值。我尝试了以下$map{Name}和$map{“Name”}。但是我没有得到数据。但我看到1美元和2美元都有价值。很抱歉问你。也许这很愚蠢。但是请帮帮我。感谢您,这一切都是区分大小写的$map{NAME}和$map{NAME}不一样。另外,我稍微修复了regexp,因为它有一个空白问题,注意“*?”而不是前面的“*”如果我像上面那样说,我会得到以下错误,字符串出现在hello.pl第30行,靠近“say”我的名字是:“(你需要预声明吗?)hello.pl第30行,靠近“say”我的名字是:”,语法错误hello.pl的执行由于编译错误而中止。我想他不是想修改基础文件。我可能误解了“我需要[…]将其设置为映射以便设置数据”我想他不是想修改基础文件。我可能误解了“我需要[…]将其设置为映射,以便我可以设置数据“