行頭をパイプ (|) で固定しようとしているプログラムがあります。ただし、実行すると、ファイル内の行が削減または削除されます。ご覧のとおり、何かを置き換えようとしているわけではありません。特定の行の先頭。プログラムは次のとおりです。
$DESCRIPTION = qr/^[0-9]+\.[0-9]+ +.*? {2,}[0-9]+.*? {2,}[0-9]+.*? {2,}[0-9]+.*? {2,}[0-9]+.*?$/;
$PRICELINE = qr/^[0-9]+.*? {2,}[0-9]+.*?$/;
$PRICELINE2 = qr/^.*? {2,}[0-9]+\.[0-9]+ {2,}[0-9]+\$/;
$CODE = qr/^\w{9}$/;
$date = qr/^AS OF.*?$/;
$accountnumber = qr/^ACCOUNT NUMBER.*?$/;
$name = qr/^CEOTID.*?$/;
while (<>) {
if (s/($DESCRIPTION)/\|$1/gi) {print STDOUT "1\n"; next LINE;};
if (s/($PRICELINE)/\|$1/gi) {print STDOUT "2\n"; next LINE;};
if (s/($PRICELINE2)/\|$1/gi) {print STDOUT "3\n"; next LINE;};
if (s/($CUSIP)/\|$1/gi) {print STDOUT "4\n"; next LINE;};
if (s/($date)/\|$1/g) {print STDOUT "5\n"; next LINE;};
if (s/($accountnumber)/\|$1/gi) {print STDOUT "6\n"; next LINE;};
if (s/($name)/\|$1/gi) {print STDOUT "7\n"; next LINE;};
print;
}
print "\n\ndone"
変数を 1 つずつ削除して、誤動作の原因となっている変数を確認しようとしましたが、まだうまくいきません。while ステートメントも使用しましたが、処理が遅く、ファイルの最初の行が削除されます。
どんな助けでも素晴らしいでしょう。