perl chomp 関数の問題に直面しています。以下のようなtest.csvがあります。
col1,col2
vm1,fd1
vm2,fd2
vm3,fd3
vm4,fd4
このcsvの2番目のフィールドを印刷したい。これは私のコードです:
#!/usr/bin/perl -w
use strict;
my $file = "test.csv";
open (my $FH, '<', $file);
my @array = (<$FH>);
close $FH;
foreach (@array)
{
my @row = split (/,/,$_);
my $var = chomp ($row[1]); ### <<< this is the problem
print $var;
}
aboe コードの出力は次のとおりです。
11111
「1」がどこから来ているのか本当にわかりません。実際、最後のファイルは次のように印刷できます。
foreach (@array)
{
my @row = split (/,/,$_);
print $row[1]; ### << Note that I am not printing "\n"
}
出力は次のとおりです。
vm_cluster
fd1
fd2
fd3
fd4
現在、これらのフィールド値を DB への入力として使用していますが、この目に見えない改行が原因で DB INSERT ステートメントが失敗しています。だから私はchompがここで私を助けるだろうと思った. むしゃむしゃする代わりに、「11111」が表示されます。
ここで私が間違っていることを理解するのを手伝ってもらえますか。
ありがとう。
loldop の応答を読んだ後、さらに情報を追加します。
以下のように書くと、何も出力されません(上記の「11111」出力でさえありません)
foreach (@array)
{
my @row = split (/,/,$_);
chomp ($row[1]);
my $var = $row[1];
print $var;
}
つまり、chomp は最後の文字列と末尾の改行を削除しています。