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", где сразу имя параметра_зывается двоеточием
Также, что, если "пробел" - это вкладка или вкладки, вместо символа пробела/пробела?
Спасибо,
Джим
Ответы
Ответ 1
Это будет охватывать все ваши случаи, а затем некоторые:
my ($key, $value) = split /\s*:\s*/, $inputline, 2;
(Или, на английском языке, разделите $inputline
на максимум два элемента, разделенных любым количеством пробелов, двоеточием и любым количеством пробелов.)
Ответ 2
($start) = $inputline =~ /\A([^:\s]+)/;
Это будет соответствовать чему угодно, кроме пробелов и :
в начале строки.
Или используя split
:
($start) = split /[:\s]+/, $inputline, 2;