Подтвердить что ты не робот

Perl - получить первое "слово" из строки ввода

Я пытаюсь написать программу Perl, которая читает строки из текстового файла, и для каждой строки извлекает первое "слово" из строки и выполняет другое действие на основе возвращаемой строки.

Основной цикл выглядит следующим образом:

while(<AXM60FILE>) {

   $inputline = $_;

   ($start) = ($inputline =~ /\A(.*?) /);

perform something, based on the value of string in $start

}

Входной файл на самом деле является файлом параметров с именем параметра и параметром_value, разделенным двоеточием ( ":" ). Там могут быть пробелы или вкладки до или после двоеточия.

Итак, файл выглядит (например) следующим образом:

param1: xxxxxxxxxxxx
param2: xxxxxxxxxxxxx
param3: xxxxxxxxxxxxxxxxx
param4: XXXXXXXXXXXXX

Это "($ start) = ($ inputline = ~/\A(.*?)/);" работает нормально для примера "param2" и примера "param3", где 1-е слово заканчивается пробелом/пробелом, но как я могу обрабатывать ситуации "param1" и "param4", где сразу имя параметра_зывается двоеточием

Также, что, если "пробел" - это вкладка или вкладки, вместо символа пробела/пробела?

Спасибо, Джим

4b9b3361

Ответ 1

Это будет охватывать все ваши случаи, а затем некоторые:

my ($key, $value) = split /\s*:\s*/, $inputline, 2;

(Или, на английском языке, разделите $inputline на максимум два элемента, разделенных любым количеством пробелов, двоеточием и любым количеством пробелов.)

Ответ 2

($start) = $inputline =~ /\A([^:\s]+)/;

Это будет соответствовать чему угодно, кроме пробелов и : в начале строки.
Или используя split:

($start) = split /[:\s]+/, $inputline, 2;