【发布时间】:2017-08-14 00:19:01
【问题描述】:
Perl 中的chomp 函数从出现在末尾的变量中删除记录分隔符。但是,在下面的代码中,它删除的不止这些——它还从变量的前面删除了一些字符。代码如下:
#!/usr/bin/env perl
use strict;
use warnings;
use String::Util qw(trim);
use feature 'say';
{
open FILE, "conf.txt" or die "Can't open file";
local $/ = ';';
my %hash;
my @val;
while (<FILE>){
next if (/^\s+$/);
@val=split /=/;
$hash{$val[0]}=$val[1];
}
say $hash{"name1"};
say chomp $hash{"name1"};
close FILE;
}
conf.txt 文件如下所示:
name1=va
l1;
name2=v
a
l2;
name3=val3;
name4=val4;
代码的输出是这样的:
~ $ ./readconf.pl
va
l1;
1
我期待say chomp $hash{"name1"}; 的输出是va\nl1。为什么只输出1?
【问题讨论】:
标签: perl