2017-08-14 16 views
0

chomp Perlでの関数は、最後に表示される変数からレコード区切り文字を削除します。しかし、次のコードでは、それ以上のものは削除されています - 変数の先頭からいくつかの文字も削除されます。ここでは、コードは次のようになります。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を出力するのですか? manualから

答えて

6

これは、すべての引数から取り出した文字の合計数を返します。

chompは、その引数をその場で変更する。おそらく切り捨てられた文字列を返しません。