【问题标题】:Perl: Strange behavior of chomp [duplicate]Perl:chomp的奇怪行为[重复]
【发布时间】: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


    【解决方案1】:

    来自manual

    它返回从所有参数中删除的字符总数。

    chomp 修改其参数。它不会返回可能被截断的字符串。

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2015-07-26
      • 2020-04-26
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      相关资源
      最近更新 更多