В моем листе Excel с колонкой Changeset я получаю набор изменений как:
C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3
Мне нужно использовать split функцию в скрипте Perl, чтобы было два вывода (ввод в виде строки выше)
split
C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS
Это звучит слишком сложно для обычного разбиения, вам нужно обычное регулярное выражение, подобное этому:
my ($first, $second) = / ^ (.+?) @@ .* (.) $ /x;
От Мастерство регулярных выражений от Марка Домина:
Правило Рэндала Рэндал Шварц (автор Learning Perl [а также пользователь переполнения стека ]) говорит: Используйте захват или m//g, когда вы знаете, что хотите сохранить. Используйте split, когда знаете, что хотите выбросить.
Используйте захват или m//g, когда вы знаете, что хотите сохранить. Используйте split, когда знаете, что хотите выбросить.
Используйте захват или m//g, когда вы знаете, что хотите сохранить.
m//g
Используйте split, когда знаете, что хотите выбросить.
Вы знаете, что хотите сохранить, поэтому используйте m//g, как в Ответ Леона Тиммерманса .
Я думаю, это то, что вы хотите, или вам нужно все это в одном утверждении?
my ($before, $after) = split '@@', $input; my $last_char = substr($after, -1, 1);
Добавляя к двум ответам уже, вы можете попробовать следующее, используя только функцию разделения:
$s = 'C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3'; @temp = split/@@/,$s; $part1 = $temp[0]; # C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS @temp = split//,$s; $part2 = $temp[-1]; # 3