/ / Що робить підстава Perl? - perl, string, substr

Що робить Perl substr? - perl, string, substr

Моя змінна $var має форму "abc.de". Що саме робить цей субстрат у цій заяві:

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

Відповіді:

5 за відповідь № 1

index() знаходить один рядок в іншому і повертає індекс або позицію цього рядка.

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

Дивлячись на вищесказане, я підозрюю, що індексний метод використовується неправильно (оскільки його визначення є індекс STR, SUBSTR), і це має бути

index($var, ".")

знайти "." в межах "abc.de" і визначити підрядок "abc.de"


2 для відповіді № 2

Використання substr передбачено тут -

substr EXPR,OFFSET,LENGTH

Оскільки зміщення дорівнює 0, операція повертає рядок up, але не включає першу "." position (повертається індексом (".", $ var)) у $ convar.

Подивіться на підлозі і індекс функції в perldoc для уточнення питань далі.


0 для відповіді № 3

Perl підлозі функція має формат:

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

який повертає рядок із зміщення індексу до зміщення індексу + довжина

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

index [str], [substr]

який повертає індекс першого входження substr в str.

тому substr ("abc.de", 0, індекс (".", $ var)); повертає підрядок, що починається з індексу 0 (тобто "a"), до числа символів першого входження рядка.

Таким чином, $ convar буде мати "abc" у вашому прикладі

edit: чорт, люди занадто швидкі: P edit2: і Брайан має рацію, що індекс використовується неправильно


0 для відповіді № 4

Чому б не запустити його і дізнатися?

#! / usr / bin / perl my $ var = $ ARGV [0]; мій $ index = index (".", $ var);  print "index - це $ index.n";  my $ convar = substr ($ var, 0, $ index); print "convar is $ convar.n";

Запустіть це на купу слів і подивіться, що відбувається.

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

індекс perldoc -f perldoc -f substr

0 для відповіді № 5

Казково, ви можете записати дані в підрядок, використовуючи substr як ліву частину призначення:

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

Вам навіть не потрібно дотримуватися тієї самої довжини - рядок буде розширено, щоб відповідати.

Технічно це відомо як використання субстрана як lvalue.