Я заранее извиняюсь, это, наверное, очень глупый вопрос с очевидным решением, которое ускользает от глаз довольно новичка в perl, или оно также могло быть в Stackoverflow как решаемый вопрос, но мой отсутствие знаний о том, что именно искать, мешает мне найти ответ.perl split странное поведение
У меня есть строка, как:
$s = FOO: < single blankspace> BAR <some whitespace character> some more text with whitespace that can span over multiple lines, i.e. has \n in them ;
#please excuse the lack of quotes, and large text describing the character in angular brackets, but in this example, but I have the string correctly defined, and in plase of <blankspace> I have the actual ASCII 32 character etc.
Теперь я хочу, чтобы разделить $ S, таким образом:
($instType, $inst, $trailing) = split(/\s*/, $s, 3);
#please note that i do not use the my keyword as it is not in a subroutine
#but i tested with my, it does not change the behavior
Я бы ожидать, что $ тип_установки принимает значение FOO:, без какого-либо окружающего пространства, в реальной тестовой строке есть двоеточие, и я считаю, насколько мне известно, что он останется в $ instType. Тогда довольно очевидно ожидать, что $ inst примет аналогичное значение BAR без каких-либо окружающих пространств, а затем, наконец, можно также опираться на $ trail, чтобы взять остальную часть строки.
Однако, я получаю: $ тип_установки занимает F, то есть только единственный символ, $ инст занимает O, единственный charater во 2-й позиции в строке $ след занимает O: BAR и остальные.
Как решить проблему?
PS Perl является 5.18.0
Вы сделали опцию '\ s *', поэтому она ничего не соответствует нигде, когда это возможно. – sln