Questo è quello che ho provato:Come faccio a echo la stringa con il comando bash in Perl?
my $s = "s" x 1000;
my $r = `echo $s |more`;
Ma non funziona, il mio programma esce direttamente ...
Questo è quello che ho provato:Come faccio a echo la stringa con il comando bash in Perl?
my $s = "s" x 1000;
my $r = `echo $s |more`;
Ma non funziona, il mio programma esce direttamente ...
Non funziona nell'esempio, perché non si stampa mai $r
. L'output viene catturato nella variabile $r
. Utilizzando invece system()
, è possibile vedere l'output stampato su STDOUT, ma non è possibile utilizzare l'output come si (probabilmente) prevede.
Basta fare:
print $r;
Aggiornamento: Ho cambiato say
-print
, dal momento che "echo" già ti dà una nuova riga.
Per uscire shell meta caratteri, come detto nei commenti, è possibile utilizzare quotemeta.
Si dovrebbe anche essere consapevoli del fatto che | more
non ha alcun effetto durante la cattura di uscita dal guscio in una variabile. Il processo è semplicemente: echo | more | $r
, e si potrebbe anche saltare more
.
provare con il comando system():
my $s = "s" x 1000;
my $r = system("echo $s |more");
visualizzerà tutti i tuoi 's', e in $r
avrai il risultato (0 in questo caso) del comando.
Come sfuggire alla stringa quando si passa a bash? – lexer
Puoi usare [quotemeta] (http://perldoc.perl.org/functions/quotemeta.html). Oppure puoi sfuggire ai personaggi da solo, se sai cosa cercare. – TLP