Prima di tutto, $_
non è una funzione. È solo una variabile ordinaria (che sembra essere letta e modificata da un sacco di builtin).
In secondo luogo, il codice che hai pubblicato non utilizza $_
. Sta accedendo agli elementi di @_
, l'elenco dei parametri.
Una versione più più leggibile del codice che hai postato potrebbe essere:
sub copyText {
my ($arg1, $arg2) = @_;
while ($arg1) {
$arg2->Empty();
$arg1 = $arg2->IsText();
sleep(1);
}
$_[0] = $arg1; # arg1 is passed by reference
}
- arg1 è un valore booleano passato per riferimento.
- arg2 è un tipo di oggetto con un metodo denominato
Empty
e uno denominato IsText
.
Spiacente, non so C#, ma si spera che si possa andare avanti con questo.
Per quelli di noi che conoscono C#, ma non perl, puoi dirci cosa '$ _' fa? O forse spiega cosa stai cercando di fare. Effettuare una conversione rigorosa da una lingua all'altra potrebbe non avere il miglior risultato. Può essere come chiedere come usare una vite con un martello. – cadrell0
@ cadrell0, '$ _' non è utilizzato in quanto sopra. '$ _ [0]' e '$ _ [1]' sono il primo e il secondo elemento dell'array '@ _'. '@ _' è la lista degli argomenti passati al sub. Gli elementi di '@ _' sono alias rispetto agli argomenti attuali (passa per ref) piuttosto che essere copie (passa per valore). – ikegami
@ikegami Ecco perché non uso perl :). '$ _ [0]' fa riferimento all'array '@ _'? O il codice OP è sbagliato? – cadrell0