Разделение строки для удаления окружающих символов <и> - PullRequest
2 голосов
/ 21 августа 2010

У меня есть такая строка <name>, я хочу отрубить <>, вынуть только name и поместить ее в переменную.

Как это сделать с помощью функции Perl "split"?

Ответы [ 4 ]

6 голосов
/ 21 августа 2010

Не используйте split .Это похоже на использование неправильного конца отвертки для забивания гвоздей.Я бы сделал это на каком-то этапе с совпадением, в котором вы захватите нужную часть в контексте списка:

 my( $var ) = $input =~ /<(.*?)>/;

В качестве альтернативы, вы можете просто снять скобки с одним из них:

 $input =~ tr/<>//;
 $input =~ s/[<>]//g;
1 голос
/ 21 августа 2010

Вы можете использовать регулярное выражение и сопоставление в контексте списка:

my $s = "<name>";
my ($name) = $s =~ /<(.*)>/;
0 голосов
/ 21 августа 2010

В ответ на ваш вопрос о том, как сделать это с помощью split, вы можете сделать это:

$input ="<string>";
print split(/[<>]/,$input);

Нажмите на живой пример

Лучший способ, однако, будет

$input = "<string>";
print $input =~ /<(.*)>/;

Нажмите для живого примера

0 голосов
/ 21 августа 2010

Я не совсем уверен, почему вы хотите использовать для этого сплит ... но здесь это так:

> perl -le'$str="<string>";print split("<",(split(">",$str))[0]);'
string
...