procmailrc テキスト ファイルを作成する perl プログラムを作成しています。
procmail が必要とする出力は次のようになります: (「|」で区切られた部分的な IP アドレス)
\(\[54\.245\.|\(\[54\.252\.|\(\[60\.177\.|
これが私のperlスクリプトです:
open (DEAD, "$dead");
@dead = <DEAD>;
foreach $line (@dead) { chomp $line; $line =~s /\./\\./g;
print FILE "\\(\\[$line\|\n"; }
close (DEAD);
これが私が得ている出力です:
|(\[54\.245\.
|(\[54\.252\.
|(\[60\.177\.
chomp が改行を削除しないのはなぜですか? まだ見知らぬ人、なぜ「|」なのか 最後ではなく、各行の先頭に表示されますか?
$line を単語に置き換えると、(print FILE "\(\[test\|"; }) 出力は、私が期待するように見えます。
\(\[test|\(\[test|\(\[test|\(\[test|
ここで何が欠けていますか?
そこで、chomp を使用しない回避策を見つけました: 答えはこちら: https://www.perlmonks.org/?node_id=504626
私の新しいコード:
open (DEAD, "$dead");
@dead = <DEAD>;
foreach $line (@junk) {
$line =~ s/\r[\n]*//gm; $line =~ s/\./\\./g; $line =~ s/\:/\\:/g;
print FILE "\\(\\[$line \|"; }
close (DEAD);
ヒントをくださった方々、ありがとうございました。