改行コードを取る

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関数を使って他の変数に代入する必要が無いですね。
そー考えると良くできてる関数だね。