Что делает Perl Substr? - PullRequest
       10

Что делает Perl Substr?

1 голос
/ 11 июня 2009

Моя переменная $var имеет форму 'abc.de'. Что конкретно делает этот подстрок в этом утверждении:

$convar = substr($var,0,index(".",$var));

Ответы [ 5 ]

5 голосов
/ 11 июня 2009

index() находит одну строку в другой и возвращает индекс или позицию этой строки.

substr() вернет подстроку строки между 2 позициями (начиная с 0).

Глядя на вышесказанное, я подозреваю, что индексный метод используется неправильно (поскольку его определение index STR, SUBSTR ), и оно должно быть

index($var, ".") 

чтобы найти '.' в 'abc.de' и определите подстроку "abc.de"

2 голосов
/ 11 июня 2009

Используемое здесь использование субстрата -

substr EXPR,OFFSET,LENGTH

Поскольку смещение равно 0, операция возвращает строку до, но не включая первую '.' позиция (возвращаемая индексом (".", $ var)) в $ convar.

Посмотрите на функции substr и index в perldoc, чтобы прояснить ситуацию.

0 голосов
/ 18 июня 2009

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

$ perl -e '$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a'
perl kicks ass!

Вам даже не нужно придерживаться той же длины - строка будет расширяться, чтобы соответствовать.

Технически, это известно как использование substr в качестве lvalue.

0 голосов
/ 18 июня 2009

Почему бы не запустить его и не узнать?

#!/usr/bin/perl
my $var = $ARGV[0];
my $index = index(".",$var);

print "index is $index.\n";

my $convar = substr($var, 0, $index);
print "convar is $convar.\n";

Запустите это на кучу слов и посмотрите, что произойдет.

Также вы можете ввести:

perldoc -f index
perldoc -f substr
0 голосов
/ 11 июня 2009

Функция Perl substr имеет формат:

substr [string], [offset], [length]

, которая возвращает строку из смещения индекса в смещение индекса + длина

индекс имеет формат:

index [str], [substr]

, который возвращает индекс первого вхождения substr в строку

so substr ('abc.de', 0, index (".", $ Var)); вернет подстроку, начинающуюся с индекса 0 (то есть 'a'), вплоть до количества символов до первого вхождения строки "."

Таким образом, $ convar будет иметь «abc» в примере, который у вас есть

редактировать: блин, люди слишком быстрые: P edit2: и Брайан прав насчет неверного использования индекса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...