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から