我有一个程序,我试图用管道 (|) 锚定行的开头。但是,当我执行它时,它会减少或删除文件中的行。正如你将看到的,我不是要替换任何东西,只是把 | 在某些行的开头。这是程序:
$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"
我试图一次消除一个变量,看看是哪一个导致了故障,但仍然没有运气。我也只是使用了一个 while 语句,但它很慢并且仍然删除了我文件的第一行。
任何帮助都会很棒。