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 № 1index()
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.