perl 从文件中阅读一行并删除多余的新行字符

zbdgwd5y  于 8个月前  发布在  Perl
关注(0)|答案(1)|浏览(82)

我有下面的代码,从一个文件中读取并加载到一个散列。这个文件只包含一行,其中有2个(ASCII)字符串,由:分隔

sub get_data {
    my $opened = open(my $fh, '<', $filename);
    if (!$opened) {
     return;
    }
    my @data = split /:/, <$fh>;                                                                                                                                                    
    my $h_data;
    $h_data->{foo} = $data[0];
    $h_data->{bar} = $data[1];
    return $h_data;
}

这似乎可以工作,但当我Dumper::Dump返回散列引用的关键字bar的值似乎有额外的空白/新行字符。
我是否应该做一些不同的事情来删除多余的空格字符?
有没有一个更perl具体的方法来处理这种文件?

6psbrbz9

6psbrbz91#

假设在行尾只有一个不需要的换行符:

my $line = <$fh>;
chomp $line;                  # remove a newline at the end if it's present
my @data = split /:/, $line;

如果行中有空格:

my $line = <$fh>;
$line =~ s/\s+//g;            # remove all whitespaces from the line
my @data = split /:/, $line;

相关问题