/ / O que o substrato de Perl faz? - perl, string, substr

O que o substrato de Perl faz? - perl, string, substr

Minha variável $var tem o formato "abc.de". O que este substr faz exatamente nesta declaração:

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

Respostas:

5 para resposta № 1

index() encontra uma string dentro da outra e retorna o índice ou posição dessa string.

substr() retornará a substring de uma string entre 2 posições (começando em 0).

Olhando para o acima, eu suspeito que o método de índice está sendo usado incorretamente (já que sua definição é índice STR, SUBSTR), e deve ser

index($var, ".")

para encontrar o "." dentro de "abc.de" e determinar uma substring de "abc.de"


2 para resposta № 2

O uso de substrato aqui implicado é -

substr EXPR,OFFSET,LENGTH

Como o deslocamento é 0, a operação retorna a string até, mas não inclui o primeiro "." position (conforme retornado pelo index (".", $ var)) em $ convar.

Dê uma olhada no substr e índice funções no perldoc para esclarecer mais as questões.


0 para resposta № 3

O Perl substr função tem formato:

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

que retorna a string do deslocamento do índice para o deslocamento do índice + comprimento

índice tem formato:

index [str], [substr]

que retorna o índice da primeira ocorrência de substr in str.

so substr ("abc.de", 0, index (".", $ var)); retornaria a substring iniciando no índice 0 (ou seja, "a") até o número de caracteres na primeira ocorrência da string "."

Então $ convar terá "abc" no exemplo que você tem

edit: droga, as pessoas são muito rápidas: P edit2: e Brian está certo sobre o índice sendo usado incorretamente


0 para a resposta № 4

Por que não executá-lo e descobrir?

#! / usr / bin / perl meu $ var = $ ARGV [0]; meu $ index = index (".", $ var);  print "index é $ index.n";  meu $ convar = substr ($ var, 0, $ index); print "convar is $ convar.n";

Execute isso em um monte de palavras e veja o que acontece.

Além disso, você pode querer digitar:

perldoc -f index perldoc -f substr

0 para a resposta № 5

Fabulosamente, você pode gravar dados em uma substring usando substr como o lado esquerdo de uma atribuição:

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

Você nem precisa se ater ao mesmo tamanho - a string se expandirá para caber.

Tecnicamente, isso é conhecido como usar substr como um lvalue.