Moja zmienna $var
ma postać "abc.de". Co dokładnie robi ten substr w tym oświadczeniu:
$convar = substr($var,0,index(".",$var));
Odpowiedzi:
5 dla odpowiedzi № 1index()
wyszukuje jeden ciąg w innym i zwraca indeks lub pozycję tego ciągu.
substr()
zwróci podciąg łańcucha w 2 pozycjach (od 0).
Patrząc na powyższe, podejrzewam, że metoda indeksu jest używana niepoprawnie (ponieważ jej definicja jest indeks STR, SUBSTR) i tak powinno być
index($var, ".")
znaleźć "." wewnątrz "abc.de" i określić podciąg "abc.de"
2 dla odpowiedzi nr 2
Podane tu użycie substr jest:
substr EXPR,OFFSET,LENGTH
Ponieważ przesunięcie wynosi 0, operacja zwraca ciąg znaków do góry, ale nie obejmuje pierwszego "." pozycja (zwrócona przez indeks (".", $ var)) do $ convar.
Spójrz na substr i indeks funkcje w perldoc, aby wyjaśnić sprawy dalej.
0 dla odpowiedzi № 3
Perl substr funkcja ma format:
substr [string], [offset], [length]
która zwraca ciąg z przesunięcia indeksu do przesunięcia indeksu + długość
indeks ma format:
index [str], [substr]
która zwraca indeks pierwszego wystąpienia substr w str.
tak substr ("abc.de", 0, index (".", $ var)); zwróci podłańcuch rozpoczynający się od indeksu 0 (tj. "a") aż do liczby znaków do pierwszego wystąpienia ciągu "."
Więc $ convar będzie miało "abc" w podanym przykładzie
edytuj: cholera, ludzie są zbyt szybcy: P edit2: i Brian ma rację co do tego, że indeks jest używany niepoprawnie
0 dla odpowiedzi nr 4
Dlaczego nie uruchomić i dowiedzieć się?
#! / usr / bin / perl my $ var = $ ARGV [0]; mój $ index = indeks (".", $ var); print "index to $ index.n"; my $ convar = substr ($ var, 0, $ index); print "convar to $ convar.n";
Uruchom to na kilka słów i zobacz, co się stanie.
Możesz również wpisać:
Indeks perldoc -f perldoc -f substr
0 dla odpowiedzi № 5
Bajecznie można zapisywać dane w podłańcuchu przy użyciu substr jako lewej strony zadania:
$ perl -e "$a="perl sucks!", substr($a,5,5)="kicks ass"; print $a"
perl kicks ass!
Nie musisz nawet trzymać się tej samej długości - sznur rozszerzy się, aby dopasować.
Technicznie jest to znane jako użycie substr jako l-wartości.