改行コードを取る
chop使い方の間違い
BBSを初めて作ったときchopを使っているのに改行されてしまうと言う現象が
現れてどうやっても取れないことがありました。
悩んだ末にひねり出した方法です。
改行コードの前に1つ多くカラムセパレートを入れるというやり方です。
今でも使っていますがchopの方がわかりやすいかもしれませんね。
方法
書きこみ
print OUT "$id\,$date\,$time\,$name\,$msg
\,
\n";
読み込み
($id,$date,$time,$name,$msg
,$eol
) = split(/\,/,$lines);
どの様に間違えて使っていたか
$line変数から改行コードを取って $msgdt変数に入れたい。
(誤)
$msgdt = chop($line);
(正)
chop($line);
$msgdt = $line;
テストプログラム
簡単なプログラムでテストしてみました。
プログラム(test1.txt)
#!/usr/bin/perl
$fld="abcdefg";
$dsp = chop($fld);
print "test1:$dsp\n";
$fld="abcdefg";
chop $fld;
print "test2:$fld\n";
テスト実行
nk02:~/test$ test1.txt
test1:g
test2:abcdef
概念から間違い?
よくよく考えてみるとchop関数を使って他の変数に代入する必要が無いですね。
そー考えると良くできてる関数だね。