Я бы предложил разделить, а также knittl.Но вы также можете удалить пробелы:
my @stuff = split /\s*XX\s*/, $line;
Также вы могли бы использовать предвидения, но они вам действительно не нужны, поскольку вы также можете использовать достаточно сложные чередования:
Версия без ws будет просто:
my @stuff = $line =~ m/XX((?:[^X]|X[^X])*)/g;
Чередование говорит, что вы возьмете что угодно, если это не 'X'
- но вы получите 'X'
если это не сопровождается другим 'X'
.Будет один символ предпросмотра, но он может потреблять символы агрессивно, без возврата назад.
Версии обрезки придется возвращаться назад, чтобы избавиться от пробелов, поэтому выражение более уродливо.