Esto es lo que he intentado:¿Cómo echo cadenas con el comando bash más en Perl?
my $s = "s" x 1000;
my $r = `echo $s |more`;
Pero esto no funciona, mi programa sale directamente ...
Esto es lo que he intentado:¿Cómo echo cadenas con el comando bash más en Perl?
my $s = "s" x 1000;
my $r = `echo $s |more`;
Pero esto no funciona, mi programa sale directamente ...
No funciona en su ejemplo, porque nunca imprime $r
. La salida se captura en la variable $r
. Al usar system()
en su lugar, puede ver la salida impresa en STDOUT, pero luego no puede usar la salida como probablemente esperaba.
Just Do:
print $r;
Actualización: He cambiado say
-print
, ya que "eco" ya se le da una nueva línea.
Para escapar metacaracteres de shell, como se ha mencionado en los comentarios, puede utilizar quotemeta.
También debe tener en cuenta que | more
no tiene ningún efecto en la captura de la salida de la cáscara en una variable. El proceso es simple: echo | more | $r
, y también puede omitir more
.
tratar con el comando system():
my $s = "s" x 1000;
my $r = system("echo $s |more");
mostrará toda su 's', y en $r
tendrá el resultado (0 en este caso) del comando.
¿Cómo escapar de la cadena cuando pasa a bash? – lexer
Puede usar [quotemeta] (http://perldoc.perl.org/functions/quotemeta.html). O puede escapar de los personajes usted mismo, si sabe qué buscar. – TLP