Curso de Raku / Objetos, entrada/salida y excepciones / Entrada y salida / Ejecutar programas externos 🆕
El entorno
Todo programa se inicia con un conjunto de variables de
entorno: valores con nombre como HOME,
PATH o USER que aporta el sistema operativo.
En Raku están disponibles en el hash dinámico %*ENV:
say %*ENV<HOME>; # the home directory, e.g. /home/annaLees una variable de entorno indexando %*ENV con su
nombre. Como es un hash ordinario, también puedes comprobar si una
variable está definida, o cambiarla para los programas que lances:
%*ENV<GREETING> = 'Hello';
say %*ENV<GREETING>; # HelloFijar una clave en %*ENV la añade al entorno que
heredará cualquier programa que arranques después con run o
shell, y así es como pasas configuración a un programa
hijo:
%*ENV<GREETING> = 'Hello';
my $proc = run 'sh', '-c', 'echo $GREETING', :out;
say $proc.out.slurp(:close).chomp; # HelloLa variable se fija en el entorno de tu programa antes de
lanzar al hijo, así que la shell que arranca run ya tiene
GREETING en su propio entorno y puede devolverlo con echo.
Cualquier variable que fijes así llega a todos los programas que inicies
después.
El twigil * te indica que %*ENV es una
variable dinámica, como $*OUT de la parte sobre entrada y
salida. Algunas otras variables con asterisco describen el mundo del
programa en ejecución: @*ARGS contiene los argumentos de la
línea de comandos y $*PROGRAM-NAME es el nombre del propio
guion. Juntas permiten que un programa entienda el contexto en el que se
lo lanzó.
Práctica
Resuelve 1 cuestionario sobre el contenido de este tema.
Navegación del curso
← Quiz — El objeto Proc | Quiz — El entorno →
💪 O ve directamente a los ejercicios de esta
sección.