Przede wszystkim $_
nie jest funkcją. Jest to zwykła zmienna (która jest odczytywana i zmieniana przez wiele wbudowanych).
Po drugie, kod, który wysłałeś, nie używa numeru $_
. Dostęp do elementów @_
, listy parametrów.
Bardziej bardziej czytelna wersja kodu ty pisał byłoby:
sub copyText {
my ($arg1, $arg2) = @_;
while ($arg1) {
$arg2->Empty();
$arg1 = $arg2->IsText();
sleep(1);
}
$_[0] = $arg1; # arg1 is passed by reference
}
- arg1 jest logiczna przekazywane przez referencję.
- arg2 to jakiś obiekt z metodą o nazwie
Empty
i jeden o nazwie IsText
.
Przepraszam, nie znam C#, ale mam nadzieję, że możesz przejść do tego.
Dla tych z nas, którzy znają C#, ale nie perl, czy możesz nam powiedzieć, co robi '$ _'? A może wyjaśnij, co próbujesz zrobić. Dokładne przeliczenie z jednego języka na inny może nie przynieść najlepszych rezultatów. To może być jak pytanie, jak użyć śruby młotkiem. – cadrell0
@ cadrell0, '$ _' nie jest używane w powyższym zakresie. '$ _ [0]' i '$ _ [1]' są pierwszymi i drugimi elementami tablicy '@ _'. '@ _' jest listą argumentów przekazywanych do podsieci. Elementy '@ _' są aliasingowane do rzeczywistych argumentów (przekazywanych przez ref), a nie jako kopie (przekazywanie według wartości). – ikegami
@ikegami Dlatego nie używam Perl :). '$ _ [0]' odwołuje się do tablicy '@ _'? Czy kod OP jest nieprawidłowy? – cadrell0