perl - verticales - simbolo del dolar
Operador Perl: $ |++; tubo de signo de dólar plus plus (4)
Es un viejo idioma, desde los días previos a IO :: Handle. En el código moderno esto debería escribirse como
use IO::Handle; STDOUT->autoflush(1);
Estoy trabajando en una nueva versión de un código de perl ya publicado, y encontré la línea:
$|++;
AFAIK, $ | está relacionado con las tuberías, como se explica en este enlace , y entiendo esto, pero no puedo entender qué significa ++ (más más) aquí.
Gracias de antemano.
EDITAR: Encontré la respuesta en este enlace :
En resumen: obliga a imprimir (vaciar) a su consola antes de la siguiente declaración, en caso de que el script sea demasiado rápido.
A veces, si coloca una declaración de impresión dentro de un bucle que se ejecuta realmente muy rápidamente, no verá la salida de su declaración de impresión hasta que el programa finalice. a veces, ni siquiera ves la salida en absoluto. la solución a este problema es "vaciar" el búfer de salida después de cada declaración de impresión; Esto se puede realizar en perl con el siguiente comando:
$|++;
[actualización] como ha sido señalado por r. Schwartz, he hablado mal; el comando anterior hace que la impresión vacíe el búfer que precede a la siguiente salida.
Incrementa el autoflush, que probablemente sea equivalente a encenderlo.
$|
el valor predeterminado es 0; haciendo $|++
tanto, lo incrementa a 1. Si se configura en un valor distinto de cero, se habilita el autoajuste en el identificador de archivo seleccionado actualmente, que es STDOUT
de forma predeterminada y rara vez se cambia.
Por lo tanto, el efecto es asegurar que print
declaraciones de print
y similares salgan inmediatamente. Esto es útil si está enviando a un socket o similar.
$|
es una abreviatura de $OUTPUT_AUTOFLUSH
, tal como lo descubrió. El ++
incrementa esta variable.
$| = 1
$| = 1
sería la forma limpia de hacer esto (IMHO).