У меня есть настроенные сценарии Perl, которые я использую для извлечения данных из текстового файла, но одна вещь, которая не будет отображаться, это что-то, начинающееся со звездочки. Вот код, который у меня есть:
while(<INFILE>) {
chomp $_;
if (m/^\s*$/) {
next;
}
my @fields = split(/\ /,$_);
my @output;
foreach my $field(@fields) {
if($field =~ /^\*?[ABMQRWY][A-Z0-9]{4}235 / ) {
push @output,$field;
}
}
}
Оператор My if захватывает все, что имеет длину 8 символов, но иногда перед заданиями стоит *, который он не будет тянуть. Как мне это включить? Я знаю, что мне нужно избежать этого, но не знаю, где его поставить.
Вот несколько примеров данных, которые я извлекаю:
W50DW235 DW
M50DW235 DW
Q0608235 08
APJ40235 40
M3515235 15
M34DW235 DW
M3408235 08
RES08235 08
BSP20235 20
W1208235 08
B3008235 08
Это необработанные строки из файла:
18122/0655 18122/0700 W50DW235 DW LEV001 002 D50DW235
18122/0735 18122/0740 M50DW235 DW LEV002 002 W50DW235
Строка, из которой звездочка не будет вытягиваться, выглядит следующим образом:
18123/0300 18123/0400 *D1708235 08 LEV001 001
Для извлечения данных я использую следующее, которое ловит элементы с двумя пробелами:
my @fields = split(/\ /,$_);